【发布时间】:2012-11-08 03:24:33
【问题描述】:
这是我的代码的简化版本:
Paint p = new Paint();
p.setShader(borderShader); //use a bitmap as a texture to paint with
p.setFilterBitmap(true);
p.setShadowLayer(20, 20, 20, Color.BLACK);
canvas.clipRect(10,0,width-10,height);
canvas.drawCircle(width/2,height/2,1000/2,p);
所以图像看起来像这样:
两边都被剪掉的圆。
问题是,因为阴影向下偏移了 20 像素,向右偏移了 20 像素。阴影的右侧部分被 clipRect 裁剪,不会显示。
我必须使用clipRect而不是简单地绘制一个白色矩形来剪切圆,因为圆的左右需要透明才能在下面显示背景。
【问题讨论】:
-
您必须在应用阴影之前对其进行剪辑。我没有尝试过,但在调用 setShadowLayer() 之前尝试调用 clipRect。
-
我尝试在clipRect之后调用setShadowLayer,但不幸的是没有成功。
-
好的,值得一试。有了阴影和透明背景,也许 9-patch 是最好的方法?
-
嗯,这是一种可能的方法。我会考虑的,谢谢!
-
我也在想也许不是把它画成一个裁剪圆,我可以用 2 条弧线和 2 条线段制作一条路径并填充它。将调查