了解Android的帆布剪裁(Understanding Android Canvas Clippi

2019-06-25 08:06发布

我无法找到一个答案。 考虑下面的代码剪辑:

           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)。

为什么顶部= 51时,我只是将它设置为50? 还有引擎盖我还不了解下什么。

Answer 1:

OK,我要问的问题之前,更清晰地阅读。 如果有人有兴趣,我会回答自己:

当设置一个新的clipRect,我以为这将取代之前裁剪。 事实并非如此。 相反,它创建一个与以前的削波的交点。 从Android开发者页面:

clipRect(浮动左,浮顶,浮右,浮动底部)

相交指定的矩形,这是本地坐标表示当前剪辑。



文章来源: Understanding Android Canvas Clipping