使用任意角度对JLabel进行Java旋转

时间:2014-10-31 16:36:59

标签: java swing graphics rotation awt

我有一个名为OrientationLabel的扩展JLabel类,它包含一个字符。那个角色是'>'在我的扩展类中是一个名为flip的函数,它基本上改变了'>'中的字符到'<'。无论如何,我想要做的是旋转标签,以使其与边缘对齐。

注意:我还有一个由两个Point对象组成的边类。在该类中是一个名为center()的函数,它在形成边的两个点之间返回一个计算中心Point对象。还有一个角度()函数,用于计算边缘的角度。

我将角度和中心点传递给我的方向标签的构造函数,这是我生成的paintComponent函数:

@Override
public void paintComponent(Graphics g){

    Graphics2D g2 = (Graphics2D)g;

    this.setLocation(Math.round(center.getX() - (getWidth()/2)), Math.round(center.getY() - (getHeight()/2)));
    g2.rotate(-rotation, getWidth() / 2, getHeight() / 2);

    super.paintComponent(g);

}

问题在于,当我旋转标签时,有时它与线条不完全对齐。它指向ok方向,flip()函数完美运行,但就像我说的有时你可以告诉它不完全对齐。我觉得它有时会有点偏斜。

我猜这与旋转中心有关。如果字符的宽度是奇数,那么中心将是一个像素而不是半个像素?

请记住,我一直在使用java很长一段时间,但是我们从未真正探索过使用Graphics / Graphics2D类,因此我也很欣赏一些好的资源,我可以快速学习这些概念/层次结构。

以90度的间隔旋转标签不会使标签歪斜,这是因为我有53度等角度。加上我试图在旋转完成后保持标签与我的线或边缘对齐。我不相信这些论坛中已经解决了这个具体问题。请至少帮助我为Graphics / Graphics2D提供良好且快速学习的资源或一般的摇摆

0 个答案:

没有答案