- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java 移动原点以及图形旋转
让某个图形旋转一个角度,其旋转中心是当前上下文的原点。默认情况下原点在(0,0)处,而大多数情况下我们都需要自己设置图形旋转中心,因此我们需要将原点移动到理想位置。
移动原点
移动原点需要调用 Graphics2D 类对象的 translate(int x, int y)。其中,x 与 y 表示新原点的坐标。
下面看在不移动原点的情况下绘制两个椭圆的示例,代码如下所示:
import java.awt.*;
import java.awt.*;
import java.awt.geom.Ellipse2D; import javax.swing.*;
public class Ellipse extends JFrame
{
Container container; public Ellipse()
{
container=getContentPane(); //得到容器container.setLayout(new FlowLayout());//设置布局格式setTitle(椭圆);//设置标题
setSize(300,300);//设置窗体大小setVisible(true);//设置为可显示
}
public void paint(Graphics g) //重写 paint()方法
{
//调用父类的 paint()方法super.paint(g);
//将 g 强制转换为 Graphics2D 类型Graphics2D x =(Graphics2D)g;
//创建一个椭圆
Shape ellipse = new Ellipse2D.Double(50, 50, 200, 150);
//第一个椭圆的 y 坐标为 50
Shape ellipse1 = new Ellipse2D.Double(50, 250, 200, 150);
//第二个椭圆的 y 坐标为 250 x.draw(ellipse); //绘制椭圆
x.draw(ellipse1); //绘制椭圆
}
}
public static void main(String[] args)
{
new Ellipse(); //实例化对象
}
}
注意上述示例中两个椭圆的 y 坐标位置,一个是 50,另一个是 250。绘制效果如图 11-2 所示。
public void paint(Graphics g)
public void paint(Graphics g) //重写 paint()方法
{
//调用父类的 paint()方法super.paint(g);
//将 g 强制转换为 Graphics2D 类型Graphics2D x =(Graphics2D)g;
//创建一个椭圆
Shape ellipse = new Ellipse2D.Double(50, 50, 200, 150);
//第一个椭圆的 y 坐标为 50 x.draw(ellipse); //绘制椭圆
x.translate(0, 200);
//将原点移动到(0,200)处
Shape ellipse1 = new Ellipse2D.Double(50, 50, 200, 150);
//第二个椭圆的 y 坐标为 50 x.draw(ellipse1); //绘制椭圆
}
这两个椭圆的 y 坐标设置成一样,如果没有发生原点移动,那么这两个椭圆将在位置上发生重叠。而事实上,由于在绘制第二个椭圆之前,原点被移动到( 0,
200)处,所以,后面的坐标值将以(0,200)为参照点。例如 y 坐标值 50,其实际效果就相当于没有移动原点情况下的 250。因此,上述示例的绘制效果图与图 11-2 所示的效果图一模一样。
图形旋转
旋转图形需要调用 Graphics2D 类对象的 rotate()方法,该方法有如下两种重载形式。
Void rotate(double theta) theta 表示旋转的角度,单位为弧度。
Void rotate(double theta , double x , double y) theta 表示旋转的角度,单位为弧度;x 与y 指定旋转时的原点坐标。
使用 void rotate(double theta , double x , double y) 方法时,当前上下文中的原点
坐标不会改变,该方法的调用效果相当于:
Translate(x,y); Rotate(theta);
Translate(x,y); Rotate(theta);
Translate(-x,-y);
也就是说,先将原点移动到(x,y)处,旋转一定角度后,又将原点移回去。
Rotate()方法事实上是旋转了 x 与 y 轴,也就是说,发生旋
您可能关注的文档
最近下载
- 《高铁乘务》专业人才培养方案.docx VIP
- 《无机及分析化学》教案.doc VIP
- 松下DC-GX9GK高级功能说明书说明书.pdf VIP
- 职业道德与职业素养.ppt VIP
- 2025年租房合同范本(可直接打印)与租房合同范本(标准版) .pdf VIP
- 人教版七年级英语上册:Unit1 《单元写作小专题》.ppt VIP
- 道路白改黑施工组织设计方案.doc VIP
- 【新教材】2025-2026学年人教版(2024)初中八年级上册英语教学计划及进度表.pdf VIP
- 2025年医德医风考试试题(附答案).docx VIP
- ZOOM声乐乐器H8 使用说明书 (Chinese)用户手册.pdf
文档评论(0)