首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphics2D - Graphics2D对象上的旋转形状

Graphics2D - Graphics2D对象上的旋转形状
EN

Stack Overflow用户
提问于 2011-11-29 15:39:15
回答 3查看 6.3K关注 0票数 2

我有一个Graphics2D对象,我用它来绘制Canvas。我在Canvas上绘制多个形状,并且只想转换其中的一个(或部分)。

我会尽量保持这个简单:

代码语言:javascript
复制
void render(Graphics2D g) {
    ... // Draw shape 1
    ... // Draw shape 2
    ... // Draw shape 3
}

我如何在保持形状1和3完好无损的情况下旋转形状2?所说的“旋转”,我指的是围绕它的中心点旋转,例如,我们可以定义为xy

我已经找了一段时间来做这件事了,但是找不到任何我想要的工作方式。

有什么简单的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-29 15:48:46

而不是围绕它的中心点旋转形状,旋转,然后平移画布。若要在(x, y)处围绕形状中心旋转,首先用(-x, -y)转换画布,然后旋转画布-d度,然后在(0,0)处绘制正常形状。

当你完成后,旋转回来,然后转换回来(注意,这些几何变换的顺序是重要的,平移然后旋转会给你一个完全不同的结果)。

这意味着您仍然可以在任意旋转时绘制一个对象,而不必自己重新计算坐标。

票数 5
EN

Stack Overflow用户

发布于 2012-03-28 08:17:56

代码语言:javascript
复制
    AffineTransform afx = new AffineTransform();
    afx.rotate(angleRad, s.getCenter().x, s.getCenter().y);
    //afx.rotate(angleRad);
    java.awt.Shape ss = afx.createTransformedShape(s.getPrimativeShape());
    return ss;   

s是我的java.awt.Shape包装类,用它做一些事情.但是,您想要的是第2行。afx.rotate(Angle,xAnchorPoint,yAnchorPoint); afx.rotate将对象围绕点旋转(x锚点;yAnchorPoint)。

希望这是你想要的

票数 3
EN

Stack Overflow用户

发布于 2011-11-29 15:44:56

为了旋转形状,请使用Graphics2D.rotate方法之一。

缓存用于shape 1shape 3的转换。在绘制shape 3之前,请确保将转换重置为缓存的转换,因为使用rotate进行shape 2将更改当前的转换坐标。

步骤:

shape 1

  • Rotate

  • Draw shape 2

  • Set

  • 缓存电流变换

  • 将转换为缓存的
  1. 绘图shape 3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8313526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档