【发布时间】:2015-08-02 04:21:35
【问题描述】:
我正在尝试根据用户键输入来旋转整个 Ellipse2D 对象。如果用户按下右键,则左右旋转键表示向左旋转。 rotAngle 设置为 25。我制作了一个单独的 drawRotEllipse,否则它总是会绘制原始的。我认为我的困惑发生在图形和形状对象上。尝试了 AffineTransform 业务,但也没有成功。我只是想让它围绕中心旋转。感谢您的帮助!
class Canvas extends JPanel implements java.io.Serializable{
int x1 = (int) (this.getWidth()/2)+100;
int y1 = (int) (this.getHeight()/2)+20;
int x2 = (int) this.getWidth()+100;
int y2 = (int) this.getHeight()+200;
@Override
public void paintComponent(Graphics g){
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.RED);
drawEllipse(g);
}
public void drawEllipse (Graphics g){
Graphics2D g2d = (Graphics2D) g;
myShape = new Ellipse2D.Double(x1,y1,x2,y2);
g2d.draw(myShape);
this.repaint();
}
public void drawRotEllipse (Graphics g){
g2d.draw(myShape);
this.repaint();
}
}
private void jPanel1KeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode()==39){
g2d.rotate(Math.toDegrees(rotAngle));
myCanvas.drawRotEllipse(g2d);
}
else if (evt.getKeyCode()==37){
g2d.rotate(Math.toDegrees(-rotAngle));
myCanvas.drawRotEllipse(g2d);
}
}
【问题讨论】:
标签: java user-interface keyboard shape