2

一度作成したパスがあり、それにRectを追加しています。

あるイベントで、パスをオフセットしPath.offset(...)たり、パスPath.transform(...) を再描画するためにキャンバスを無効にしたりしています。

しかし、パスは新しい場所で再描画されていません。

を使用してパスの境界を確認Path.computeBounds(...)したところ、四角形が移動したことがわかります。Canvas.drawPath(...)新しい場所でパスを再描画しない理由がわかりません。

新しい場所でパスを再描画する唯一の方法は、新しいパスを作成し、それに変換されたパスを追加することですが、毎回やりたいとは思いません。

m_objPath.offset(p_fltDx, p_fltDy);

//////////////////////////////  
// With this lines it makes the path redrawn in the right place - but why should i ??
Path objPath = new Path();
objPath.addPath(m_objPath);
m_objPath = objPath;
//////////////////////////////

m_objCanvas.invalidate();
.
.
.

m_objCanvas.drawPath(m_objPath, m_objPaint);

助言がありますか?

4

1 に答える 1

1

Path.offset(..)この問題をAndroid 4.1 および Android 2.3 に対してテストしました。

  • Android 2.3 では問題なくoffset(..)動作します。
  • Android 4.1 では、パスの新しい位置を表示できません。それでも感動!メイン画面 (Samsung の中央ハードウェア ボタン) に戻ってアプリを再起動すると、正しい位置が表示されます。

したがって、パスを使用してドロップするだけです...

于 2014-05-12T05:45:19.113 に答える