我在java中创建了一个简单的绘图程序。我遇到了擦除工具的问题。我不能让用户只用白色油漆来擦除,因为我希望背景是一张图片。无论如何,我试图通过每当用户绘制绘画时试图将其添加到数组列表中。然后,我希望用户在程序上绘制一条白线以显示正在删除的内容。当白线进入图形时,我想得到一个结果。这是我的代码:
al = new ArrayList<Line2D>();
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
if(graphics2D != null && paint.erase==false)
{
currentX = e.getX();
currentY = e.getY();
graphics2D.setStroke(new BasicStroke(size));
graphics2D.drawLine(oldX, oldY, currentX, currentY);
repaint();
oldX = currentX;
oldY = currentY;
Line2D test=new Line2D.Float(oldX, oldY, currentX, currentY);
al.add(test);
//New system
}
if (paint.erase==true)
{
currentX = e.getX();
currentY = e.getY();
graphics2D.setStroke(new BasicStroke(size));
graphics2D.drawLine(oldX, oldY, currentX, currentY);
repaint();
for( Line2D name : PadDraw.al ) {
boolean result = Line2D.linesIntersect(oldX,oldY,currentX,currentY,name.getX1(),name.getY1(),name.getX2(),name.getY2());
if (result==true)
{
System.out.println("paint found");
}
}
oldX = currentX;
oldY = currentY;
}
}
});
答案 0 :(得分:0)
这是一个非常灵活的解决方案,可能有效:
graphics
graphics
。您还可以使用此方法绘制擦除矩形,圆形等。但是,每次鼠标移动时都不应该使用它,因为它需要太长时间。您可以暂时在这些位置绘制一些颜色来弥补这一点。