我正在实施扫描线算法,它应该用我在参数中设置的颜色填充多边形。它完美地运行,但算法的另一个参数是List
Points
。在这里,我调用polygon.getPoints()
方法,它获取最后一个多边形绘制的点。这样我只能填充最后一个多边形。
if(tool == 4){
rasterImage = scanLine.fill(rasterImage,polygon.getPoints(),0x77a345);
panel.repaint();
}
这是RasterizePolygon()方法
您可以看到多边形的点保存在此处的列表中。
public RasterImage<PixelType> rasterizePolygon(RasterImage<PixelType> img,
final double startX, final double startY, final PixelType value){
RasterImage<PixelType> result = img;
if(isDrawing == false){
points.clear();
}
points.add(new Point((int) startX, (int) startY));
if(isDrawing == true) {
if ((points.get(points.size() - 1).x >= points.get(0).x - 10) && (points.get(points.size() - 1).x <= points.get(0).x + 10) &&
(points.get(points.size() - 1).y >= points.get(0).y - 10) && (points.get(points.size() - 1).y <= points.get(0).y + 10)) {
isDrawing = false;
}
}
return result;
}
如您所见,我在完成绘制多边形后清除了点列表。这样我就可以通过向列表添加新点来开始绘制另一个。但是,我希望能够绘制另一个多边形,但甚至可以填充前一个多边形。如何实现这个?