trs*_*trs 6 java graphics rotation affinetransform graphics2d
我想围绕它的中心点旋转一个矩形,它应该保留在它应该被绘制的位置并在该空间中旋转
这是我的代码:
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2);
Shape transformed = transform.createTransformedShape(rectangle);
g2.fill(transformed)
Run Code Online (Sandbox Code Playgroud)
旋转矩形但是在屏幕的不同部分绘制,我该如何纠正?
Dan*_*n W 14
我没有试过这个,但似乎你没有得到正确的矩形中间.尝试:
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2);
g2.fill(transformed);
Run Code Online (Sandbox Code Playgroud)
不同之处在于您现在将宽度添加到起始X点并将高度添加到起始Y点,因此是矩形的中间.
希望这可以帮助.
小智 5
AffineTransform transform = new AffineTransform();
transform.rotate(theta, rect.getX() + rect.width/2, rect.getY() + rect.height/2);
AffineTransform old = g2.getTransform();
g2.transform(transform);
// draw your rectangle here...
g2.setTransfrom(old);
Run Code Online (Sandbox Code Playgroud)
如果这样做,可以绘制更高级的矩形.例如,使用渐变填充或矩形内的文本.一切都会随之旋转.
| 归档时间: |
|
| 查看次数: |
22567 次 |
| 最近记录: |