我正在编写一个(本质上)模仿 MS Paint 的应用程序;可以选择铅笔工具,画一条笔划为3的线;您可以选择“标记”工具并绘制一条笔划为 7 的线等。
我想在我的画布周围画一个边框。这很简单,是的。然而,对于我拥有的其他方法,我能想到的实现这一点的唯一方法是在绘制边框后进行大量抽查。有没有一种有效的方法可以做到这一点而不与已选择的工具的笔画/颜色发生冲突?
这里是drawBorder()
method:
private void drawBorder(GraphicsContext g) {
final double canvasWidth = g.getCanvas().getWidth();
final double canvasHeight = g.getCanvas().getHeight();
g.setStroke(Color.BLACK);
g.setLineWidth(4);
g.strokeRect(0, 0, canvasWidth, canvasHeight);
//sets the color back to the currently selected ColorPicker color
g.setStroke(selectedColor);
}
但是,这段代码会与我的冲突clear()
action
clearTool.setOnAction(e -> {
graphics.clearRect(0, 0,
canvas.getWidth(), canvas.getHeight());
drawBorder(graphics);
});
因为清除画布后,描边线宽度将为 4。这是一个问题,因为如果我选择铅笔工具(描边线宽为 3),则它会是 4,直到我选择另一个工具并切换回来到铅笔工具;此外,如果我在按下清除按钮时选择了标记工具,则同样的概念适用(笔划线宽 7 将是 4,直到我选择另一个工具,然后重新选择标记工具)。
我试图避免为每个工具设置检查,并每次都重置笔画的线宽——虽然这可行,但看起来很复杂。