我很难找到答案。请考虑下面的剪辑代码:
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,50109,59),那么在上面的代码中,我希望剪裁界限是(100,50,110,60)。不是。getClipbounds()返回(100、51、110、60)。
为什么把top=51设为50?有件事我还不明白。
最佳答案
好的,我需要在提问前读得更清楚些。如果有人感兴趣,我会亲自回答:
当设置一个新的cliprect时,我假设它会替换先前的剪辑。事实并非如此。相反,它会创建与上一个剪辑的交集。从Android开发者页面:
cliprect(左浮动,顶部浮动,右侧浮动,底部浮动)
将当前剪辑与指定的矩形相交,即
用局部坐标表示。