【问题标题】:java rotate rectangle around the centerjava围绕中心旋转矩形
【发布时间】:2012-01-10 17:33:37
【问题描述】:

我想围绕它的中心点旋转一个矩形,它应该保留在应该绘制的位置并在该空间中旋转

这是我的代码:

AffineTransform transform = new AffineTransform();

    transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2);
    Shape transformed = transform.createTransformedShape(rectangle);
    g2.fill(transformed)

矩形被旋转了,但它被绘制在屏幕的不同部分,我该如何纠正这个问题?

【问题讨论】:

    标签: java graphics rotation graphics2d affinetransform


    【解决方案1】:

    我还没有尝试过,但您似乎没有得到正确的矩形中间。试试:

    AffineTransform transform = new AffineTransform();
    transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2);
    g2.fill(transformed);
    

    不同之处在于现在您将宽度添加到起始 X 点并将高度添加到起始 Y 点,因此是矩形的中间。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:
      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);
      

      如果你这样做,它可以绘制一个更高级的矩形。例如,使用渐变填充或矩形内的文本。一切都会随之旋转。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-24
        • 2015-03-29
        • 2014-04-21
        • 1970-01-01
        • 2013-08-23
        • 2013-02-14
        • 2012-10-01
        • 1970-01-01
        相关资源
        最近更新 更多