我正在創建一個讓用戶在屏幕上繪製的程序,就像在MS繪圖中使用鉛筆工具一樣,然後允許用戶重播創建繪圖的過程,就好像某人是畫在你面前。動畫繪製Path2D
我使用Path2D完成此操作的方式,以及通過moveTo和lineTo方法,使用該路徑繪製一條線。
我現在似乎無法弄清楚如何動畫重繪Path2D對象。我目前的策略是創建一個新的Path2D,並使用PathIterator,迭代地將舊路徑中的線段添加到新路徑。
這是我在想什麼至今:
public void redrawPath() {
Path2D oldPath = path;
path = new Path2D.Double();
double[] coords = new double[100];
PathIterator pi = oldPath.getPathIterator(new AffineTransform());
while (!pi.isDone()) {
pi.next();
pi.currentSegment(coords);
//Add segment to new path
repaint();
}
}
的主要問題是,我不知道該線段的大小,所以我不知道如何大小COORDS陣列。我還沒有弄清楚我將如何將這些片段添加到新路徑中。似乎可以使用Path2D中的append方法,儘管它似乎將整個路徑添加到自身。
我意識到Path2D是一個形狀,但我似乎無法找到任何替代方法來做到這一點。
我剛剛發現[此頁](http://www.java2s.com/Code/JavaAPI/java.awt.geom/PathIteratorcurrentSegmentdoublecoords.htm),其中包含一個非常有用的示例。 我剛剛意識到我是愚蠢的,讀錯了api。座標數組只能是座標的最大尺寸[6]。 調用repaint現在不會做任何事情,所以我想我將不得不使用助手線程來更新後臺中的路徑。 – Noupoi
爲了更快提供更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整和可驗證示例)。 –