5

これに対する答えを見つけるのに苦労しています。以下のクリッピング コードを検討してください。

           boolean is_ok = mycanvas.clipRect(clip_left, clip_top, clip_right+1, clip_bottom+1);
       mycanvas.getClipBounds(clipRect);
       if (!is_ok ||
               clipRect.left != clip_left ||
               clipRect.top != clip_top ||
               clipRect.right != clip_right+1 ||
               clipRect.bottom != clip_bottom+1)
       {
           Log.i("DEBUG", "setClipping failed");
       }

クリップの境界が返されると、設定されたものと一致しません。たとえば、clip_left、clip_top、clip_right、clip_bottom が (100,50,109, 59) の場合、上記のコードを考えると、クリッピング境界は (100, 50, 110, 60) であると予想されます。そうではありません。getClipBounds() は (100, 51, 110, 60) を返します。

50 に設定したのになぜ top = 51 なのですか? 私がまだ理解していないボンネットの下に何かがあります。

4

1 に答える 1

7

わかりました、質問する前にもっとはっきりと読む必要があります。誰かが興味を持っている場合、私はこれに自分で答えます:

新しいclipRectを設定するとき、以前のクリッピングを置き換えると思いました。そうではありません。代わりに、前のクリッピングとの交差を作成します。Android 開発者ページから:

clipRect(左にフロート、上にフロート、右にフロート、下にフロート)

ローカル座標で表される指定された長方形と現在のクリップを交差させます。

于 2012-06-08T03:20:40.280 に答える