赞
踩
我发现,用canvas绘图如果只是创造一些图形倒还容易,无非就是麻烦一点。
但是我居然一下想不到怎么从图像中扣出一个透明的圆形来。
方形的很容易嘛,可以在四周绘制几个方形,把中间空出来就可以了,已经实现了。但是没办法让中间空出一个圆形的来。
比如说,类似扫码的界面,就中间一个扫码区域可用,其他区域是半透明的,或者是一个蒙版,把需要特写的地方空出来,其他地方是半透明的。
第一个方法:使用paint,setStrokeWidth.
在绘图的时候,需要设置paint,如果绘制一个圆形,把paint设置成stroke,就会绘制一个带边线的圆形,但是效果不是上面提到的那样的中空的。
但是,如果把strokeWidth设置的很宽,就可以模拟出这种效果。具体的试一下就知道了。
其中,设置的宽度是在原边线的位置,往外和往内各绘制0.5个宽度,加起来就是1个宽度了。
缺点:空出来的空间大了还好,看不出来毛病(几乎看不出来)。如果中间的圆小了,就看得出来那实际上是个多边形,貌似是个6变形。
第二个方法,绘图的时候,paint有个方法 :setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
如果设置了这个,那么,绘出来的图形会
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。