canvas教程

Android中Canvas绘图之Shader使用图文详解(2)(3)

字号+ 作者:H5之家 来源:H5之家 2017-03-22 10:00 我要评论( )

可以使用ComposeShader将二者组合使用,基本代码如下所示: ComposeShader composeShader = new ComposeShader(shaderA, shaderB, porterDuffMode);paint.setShader(composeShader);canvas.drawXXX(..., paint); 上

可以使用ComposeShader将二者组合使用,基本代码如下所示:

ComposeShader composeShader = new ComposeShader(shaderA, shaderB, porterDuffMode); paint.setShader(composeShader); canvas.drawXXX(..., paint);

上述代码等价于下面的代码片段:

canvas.saveLayer(left, top, right, bottom, null, Canvas.ALL_SAVE_FLAG); paint.setShader(shaderA); canvas.drawXXX(..., paint); paint.setXfermode(new PorterDuffXfermode(mode)); paint.setShader(shaderB); canvas.drawXXX(..., paint); paint.setXfermode(null); canvas.restore();

此处所说的以上两个代码片段等价的前提是,两个代码片段中的canvas.drawXXX(…, paint)方法中调用的drawXXX方法相同,并且里面传入的参数都相同,例如我们之前两段心形代码示例中都调用drawRect()方法且绘制的矩形的位置及尺寸都相同。

总结

本文依次介绍了Shader的五个子类:BitmapShader、LinearGradient、RadialGradient、SweepGradient和ComposeShader。并在最后对ComposeShader这个相对复杂的示例进行了讲解,如果大家能看明白最后ComposeShader这个示例,相信大家已经对Shader理解地比较透彻了。

关于LinearGradient、RadialGradient、SweepGradient这三个渐变效果Shader,大家也可以参考一下博文 《图文详解Andorid中用Shape定义GradientDrawable》 ,该文详细介绍了如何用XML中的 <shape> 节点定义各种具有渐变效果的GradientDrawable,这两篇博文可互为映照。

(责任编辑:最模板)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
l