6

想象一下,我有一个矩形图像。我怎么能创造出像下一个样式?如何从图像创建一个圆圈clippath?

enter image description here enter image description here

我的意思是,裁剪图像成一个圆圈,添加边框,阴影和毛/光泽效果。到目前为止,我只尝试过这段代码来裁剪图像:Cropping circular area from bitmap in Android,但仅此而已。我不知道如何去做Android中的其他组件。

+0

我发布了一个圆角实现,希望它对你有所帮助,http://stackoverflow.com/a/19858771/1294681 – VinceStyling

回答

16

一个简单的方法来达到这种效果是使用Canvas.drawCircle()BitmapShader

BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 

Paint p = new Paint(); 
p.setShader(s); 

myCanvas.drawCircle(centerX, centerY, radius, p); 

要做到阴影,只需调用Paint.setShadowLayer()上的油漆(这个,如果你画的效果到屏幕外只会工作Bitmap或如果您的View使用软件层 - 通过调用View.setLayerType() - )设置。

可以使用Paint.Style.STROKE样式(可以通过调用Paint.setStyle()来设置)在顶部绘制另一个圆来绘制边框。

最后,您可以在第一个圆圈上绘制圆形,椭圆形或Path来绘制光泽。您需要在绘画上使用着色器LinearGradient,并且还需要剪裁光泽。您可以通过两种方式来实现:

  1. 如果您绘制整个影响到Bitmap,这是什么,我会建议,只需将油漆的Xfermodenew PorterDuffXfermode(PorterDuff.Mode.SRC_IN)
  2. 如果您直接在屏幕上绘制效果,则只需使用Canvas.clipPath()即可设置圆形剪辑。请注意,这仅适用于Android 4.3以上的硬件加速。