私は、MS ペイントの鉛筆ツールを使用するように、ユーザーが画面上に描画できるようにし、ユーザーが描画を作成するプロセスを再生できるようにするプログラムを作成しています。
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 が Shape であることは認識していますが、これを行う別の方法が見つからないようです。