【发布时间】:2014-11-24 02:58:52
【问题描述】:
我正在编写一个(基本上)模仿 MS Paint 的应用程序;可以选择铅笔工具,用笔画3画一条线;你可以选择Marker工具,画一条笔画为7等的线。
我想在我的画布周围画一个边框。这很简单,是的。但是,对于我拥有的其他方法,我能想到的唯一方法是在绘制边界后进行大量抽查。有没有一种有效的方法来做到这一点,而不会与已选择的工具的笔触/颜色发生冲突?
这里是drawBorder() 方法:
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() 操作冲突
clearTool.setOnAction(e -> {
graphics.clearRect(0, 0,
canvas.getWidth(), canvas.getHeight());
drawBorder(graphics);
});
因为在清除画布后,笔划线宽将为 4。这是一个问题,因为如果我将铅笔工具作为所选工具(笔划线宽为 3),在我选择另一个工具之前它将为 4并切换回铅笔工具;此外,如果我在按下清除按钮时选择了标记工具,同样的概念也适用(在我选择另一个工具然后重新选择标记工具之前,笔划线宽 7 将为 4)。
我试图避免必须为每个工具设置检查,并让它每次都重置笔触的线宽——虽然这样可行,但看起来很复杂。
【问题讨论】: