
我在画布上绘制了一个充满黑色的圆圈,我将画布的背景颜色设置为红色.
我只想看到黑色的圆圈作为我的视图,但我也得到了红色.
我尝试使用canvas.clipPath()它工作.我在网上搜索,发现我们需要禁用硬件加速才能使其正常工作.我试过了,但它仍然工作.
尝试禁用特定视图的硬件加速:
vIEw.setLayerType(VIEw.LAYER_TYPE_SOFTWARE, null);还有整个应用:
androID:harDWareAccelerated="false"在这两种情况下都是Dint工作.
有关如何使其工作的任何想法?
码:
在这里,我正在削减
@OverrIDeprotected voID onDraw(Canvas canvas) { super.onDraw(canvas); this.canvas = canvas; path.reset(); left = 50; top = 50; right = getWIDth()- 50; bottom = getHeight()-50; RectF rectf = new RectF(left, top, right, bottom); path.arcTo(rectf, startAngle, sweepAngle); path.lineto(linex, liney); canvas.clipPath(path); canvas.drawPath(path, paint); //canvas.restore();}解决方法:
这不是剪辑路径的用途.当您绘制路径然后剪切它时 – 这意味着您将从该点在画布上绘制的其他东西将被路径遮盖.
在你的情况下,你在剪切画布之前绘制一个红色背景 – 所以它遍布画布,然后你剪切它但只在路径内绘制,所以裁剪是无用的.
您可以在该代码中获得所需内容:
// Do not set any background to the vIEw beforeprotected voID onDraw(Canvas canvas) { super.onDraw(canvas); this.canvas = canvas; path.reset(); left = 50; top = 50; right = getWIDth()- 50; bottom = getHeight()-50; RectF rectf = new RectF(left, top, right, bottom); path.arcTo(rectf, startAngle, sweepAngle); path.lineto(linex, liney); canvas.clipPath(path); canvas.drawRect(0, 0, getWIDth(), getHeight(), Red Paint in here); canvas.drawPath(path, paint); //canvas.restore();}这样你就可以在pathClip之后绘制背景
你不会看到任何红色,因为你画在它后面的所有路径上,如果我猜对了 – 你希望能够用一种颜色绘制一个圆的一部分,而其他颜色的其余部分 – 你可以实现它您将剪辑的路径将是整个圆圈,您绘制的路径将是您要绘制的部分
总结以上是内存溢出为你收集整理的android – canvas.clipPath()即使在禁用harware加速后也无法正常工作全部内容,希望文章能够帮你解决android – canvas.clipPath()即使在禁用harware加速后也无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)