我正在编写一个应用程序(基本上)模仿MS Paint的过程;您可以选择铅笔工具,并绘制一个笔划为3的线;您可以选择标记工具并绘制一条线条,笔画为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,直到我选择另一个工具,然后重新选择标记工具)。
我试图避免必须设置每个工具的检查,并让它每次都重置笔划的线宽 - 虽然这会工作,但似乎令人费解。
在哪里有,我可以看到这样的例子吗? – Nxt3 2014-11-23 17:32:32
JavaFX中没有'Canvas.paint()'方法。 – 2014-11-23 18:33:08
@James_D啊,我的错。改编了答案。 – fishinear 2014-11-23 18:59:20