我正在編寫一個應用程序(基本上)模仿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