use*_*201 5 java swing rotation graphics2d paintcomponent
我得到以下代码:
import java.awt.*;
import javax.swing.*;
public class GraphicPanel extends JPanel {
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setFont(new Font("Arial",Font.BOLD,24));
g2d.drawString("A",300,250);
g2d.rotate(45 * Math.PI/180);
g2d.drawString("B",300,250);
}
}
Run Code Online (Sandbox Code Playgroud)
它应该旋转B并将其放在A所在的相同位置,但是由于某种原因,B会在完全不同的位置出现。
我很确定我理解为什么。这是因为缩放,旋转等操作时会操纵整个协调系统(我正确吗?)
无论如何,我想知道如何旋转或缩放对象,并且仍然使它出现在以前的位置。例如,在一个游戏中,每10毫秒不断更新和显示一次自身,其中一个精灵正在旋转,但是仍然停留在10毫秒之前的位置。
编辑:试图事先搜索Google,猜想这个问题的措辞有点棘手,因为我发现没有帮助。
非常感谢 :)
当您在对象上调用该rotate方法时Graphics2D,您将围绕原点将整个画布旋转该角度。因此,如果从 (300, 250) 开始,然后绕 (0, 0) 旋转 45 度,则旋转后在 (300, 250) 处绘制形状将会在该点映射到的任何位置绘制该形状。
您应该使用另一种形式,rotate获取旋转枢轴点的角度以及 x 和 y 坐标,并将您的点 (300, 250) 传递到其中。(不过,如果您想围绕字符或字符串的中心旋转,则需要稍微调整该点。)
| 归档时间: |
|
| 查看次数: |
4013 次 |
| 最近记录: |