java 移动原点以及图形旋转.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 轴,也就是说,发生旋

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地境外
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档