【发布时间】:2013-03-02 00:48:44
【问题描述】:
所以,我试图从单击鼠标开始动态绘制多边形,直到我停止拖动和释放。而不是,为了这个问题,当我单击时绘制一个方形轮廓,向下拖动,然后向右,然后向上,然后向左,这就是发生的事情:http://imgur.com/t8ZN3Pp
有什么建议吗?
注意事项:
model.addPolygon() 创建一个带有起点的 Polygon 并将其添加到名为 'polys' 的 ArrayList 中
model.addPolygonPoint() 将点添加到存储在“polys”中的这个创建的多边形中
我的绘画函数通过多边形迭代来绘画
public void mousePressed(MouseEvent e) {
oldX = e.getX();
oldY = e.getY();
model.addPolygon(oldX, oldY);
}
public void mouseDragged(MouseEvent e) {
currentX = e.getX();
currentY = e.getY();
model.addPolyPoint(currentX, currentY);
repaint();
}
。 . .然后在paintComponent中:
for (ListIterator<Polys> iter =
model.polys.listIterator(model.polys.size());
iter.hasPrevious();){
graphics2D.draw(iter.previous().poly);
完整的paintComponent:
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image == null) {
image = createImage(getSize().width, getSize().height);
graphics2D = (Graphics2D) image.getGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
g.drawImage(image, 0, 0, null);
for (ListIterator<Polys> iter =
model.polys.listIterator(model.polys.size());
iter.hasPrevious();){
graphics2D.draw(iter.previous().poly);
}
}
【问题讨论】:
-
显示您的
paintComponent代码.. -
@VishalK 我会编辑完整的代码,但我认为这并不重要
-
你必须在 mouseDragged 方法中用它们平移鼠标拖动点后设置 oldX 和 oldY。
-
@Legend 在 repaint() 之后添加下面的内容会产生与提供的图片相同的结果。或者这就是你的意思? (对不起,不知道如何格式化) oldX = currentX; oldY = currentY;
-
@Rima 你不能添加新点。您只需翻译已经存在的。我会尝试快速制作一些东西给你看。
标签: java awt polygon graphics2d java-2d