我一直在研究一個簡單的描畫程序,並且最近在繪製組件時重繪圖形時遇到了一個問題。在paintComponent中重繪形狀時無法保存描邊/線條粗細
@Override
public void paintComponent(final Graphics theGraphics) {
super.paintComponent(theGraphics);
final Graphics2D g2d = (Graphics2D) theGraphics;
if (!preDrawnShapes.isEmpty() && !preDrawnShapeThickness.isEmpty()) {
for (int i = 0; i < preDrawnShapes.size(); i++) {
g2d.setStroke(new BasicStroke(preDrawnShapeThickness.get(i)));
g2d.draw(preDrawnShapes.get(i));
}
}
g2d.setStroke(new BasicStroke(currentThickness));
if (myShape != null) {
g2d.draw(myShape);
preDrawnShapeThickness.add(currentThickness);
}
}
此paintComponenent應該先重繪之前繪製的形狀,然後繪製從用戶輸入創建的新形狀。
出於某種原因,繪製新的形狀時,形狀厚度被設定爲當前厚度但我畫過的1
preDrawnShapes默認厚度之前的任何形狀是一個形狀的ArrayList preDrawnShapeThickiness是一個Float Arraylist。
我在這裏錯過了什麼嗎?
更新:我發現PreDrawnShapeThickness只存儲零的Floats。我不確定爲什麼。
謝謝你的幫助,我做了一個小修復,它的工作原理。 –