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 回答