如何设置 AffineTransform 旋转而不是剪切?

发布于 2024-09-02 06:40:10 字数 312 浏览 11 评论 0原文

我在使用 Graphics2D 绘图时使用 AffineTransform。我在绘制形状之前用它来变换形状。 rx 和 ry 应该是旋转,但在绘制时,形状被剪切而不是旋转。如何强制轮换?我尝试使用默认构造函数,然后调用旋转、缩放和平移,但形状看起来一点也不像它们应该看起来的样子。

transform = new AffineTransform(sx, rx, ry, sy, tx, ty);
transform.createTransformedShape(shape); // Where shape is a GeneralPath instance

I use the AffineTransform when drawing with Graphics2D. I use it to transform a Shape before drawing it. rx and ry are supposed to be rotation but when drawing the shapes are sheared not rotated. How can I enforce rotation? I tried using the default constructor then calling the rotate, scale and translate but the shapes looked nothing like they're supposed to look.

transform = new AffineTransform(sx, rx, ry, sy, tx, ty);
transform.createTransformedShape(shape); // Where shape is a GeneralPath instance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗藏城府 2024-09-09 06:40:10

阅读对图像应用仿射变换一文。

您需要使用 rotate 方法以获得正确的旋转。

Read Applying Affine Transformation to Images article.

You need to use rotate method to get correct rotation.

无远思近则忧 2024-09-09 06:40:10

您可以使用旋转方法,例如

transform = g2d.getTransform();
transform.rotate(Math.toRadians(angleInDegree), pivotX, pivotY);
g2d.setTransform(transform);    
// draw anything and it will be rotated based on rotate method
transform.rotate(Math.toRadians(0), pivotX, pivotY);
g2d.setTransform(transform); // now further drawing will no be drawn rotated

You can use rotate method like

transform = g2d.getTransform();
transform.rotate(Math.toRadians(angleInDegree), pivotX, pivotY);
g2d.setTransform(transform);    
// draw anything and it will be rotated based on rotate method
transform.rotate(Math.toRadians(0), pivotX, pivotY);
g2d.setTransform(transform); // now further drawing will no be drawn rotated
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文