在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)。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
对我自己的问题的简短回答是肯定的,Canvas.drawPath确实使用画布上的剪辑集以及路径本身的形状,它不会覆盖它。
theCanvas.clipRect(new Rect(632, 269, 1265, 539 ), Region.Op.REPLACE);
theCanvas.drawPath( theNativePath, thePaint );
上面的代码生成了我的路径,用我的纹理绘制,但是在路径和矩形的组合区域内,我预先应用于画布中的剪辑。我的纹理看起来仍然是错误的,但问题不在于裁剪,它的行为符合预期。
今天早上进一步调查后,我已经将问题缩小到我在Paint对象中的BitmapShader或者在我的纹理缓存中提供BitmapShader的问题。
为任何混乱道歉 - 我现在将戴上'笨蛋'。