Androids Canvas.drawPath是否使用Canvas中的剪辑集?

时间:2014-01-15 18:29:41

标签: java android android-canvas clipping

在Android中,我使用Canvas.drawPath(Path,Paint)来填充路径。我已将Paint变量设置为使用BitmapShader&填充的风格。此方法正常工作,直到我尝试使用其他剪辑,即我尝试绘制路径中的子区域,如此

theCanvas.clipRect( visibleRect, Region.Op.REPLACE );
theCanvas.clipRect( additionalClipping, Region.Op.INTERSECT );
theCanvas.drawPath( path, paint );

我想要的结果是在Paint中的BitmapShader中绘制纹理,绘制到与路径边缘相交的矩形区域。

但实际结果是将纹理平铺在Path区域 - 我在Canvas上设置的剪辑似乎没有效果。

它几乎就像调用Canvas.drawPath在内部调用Canvas.setClip(Path,Region.Op.Replace)。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

对我自己的问题的简短回答是肯定的,Canvas.drawPath确实使用画布上的剪辑集以及路径本身的形状,它不会覆盖它。

theCanvas.clipRect(new Rect(632, 269, 1265, 539 ), Region.Op.REPLACE);
theCanvas.drawPath( theNativePath, thePaint );

上面的代码生成了我的路径,用我的纹理绘制,但是在路径和矩形的组合区域内,我预先应用于画布中的剪辑。我的纹理看起来仍然是错误的,但问题不在于裁剪,它的行为符合预期。

今天早上进一步调查后,我已经将问题缩小到我在Paint对象中的BitmapShader或者在我的纹理缓存中提供BitmapShader的问题。

为任何混乱道歉 - 我现在将戴上'笨蛋'。