标签:java rotation swing 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);
}
}
它应该旋转B并将它放在同一个地方A,但由于某种原因,B在一个完全不同的位置.
很确定我明白为什么会这样.这是因为在缩放,旋转等时操纵整个协调系统(我是否正确?)
无论如何,我想知道如何旋转或缩放一个物体,并且它仍然显示在它之前的位置.例如,在每10毫秒不断更新和显示自身的游戏中,精灵正在旋转,但仍然保持在之前10毫安的位置.
编辑:试图事先搜索谷歌,猜测这个问题的措辞有点棘手,因为我没有发现任何帮助.
非常感谢 :)
解决方法:
当您在Graphics2D对象上调用rotate方法时,您将围绕原点旋转整个画布.因此,在旋转后在(300,250)处绘制一个形状,如果从(300,250)处开始然后将其旋转45度(0,0),将在任何点处绘制它.
您应该使用the other form of rotate
获取角度以及旋转轴点的x坐标和y坐标,并将点(300,250)传递给它. (虽然,如果你想围绕角色或字符串的中心旋转,你需要稍微调整一点.)
标签:java,rotation,swing,graphics2d,paintcomponent 来源: https://codeday.me/bug/20190624/1280756.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。