Android UI效果之绘图篇(三)效果之绘图篇(三)
一、一、 PorterDuffXfermode
PorterDuffXfermode类似于数据集合里面的交集并集概念,只是数据里面取的是两个集合,而我们这里取的是两个图形之间的
交集并集,我们先来看一张Android API Demo里面一张金典的图
图中的Src和Dst相当于是数学中的两个集合,而在我们的代码中我们可以这样来操作这两个集合
canvas.drawSrc();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XXX));
canvas.drawDst();
只需要更具我们的需要设置不同的Mode即可,从此以后,圆角矩形什么的,那都不是事儿!
二、二、Shader
Shader字面意思是着色器、渲染器,有五个子类分别是:
BitmapShader
LinearGradient
RadialGradient
SweepGradient
ComposeShader
1、BitmapShader:位图渲染,顾名思义,使用BitmapShader可以对位图进行一些着色渲染操作
构造方法如下
/**
* @param bitmap 需要渲染的位图
* @param tileX X方向渲染模式
* @param tileY Y方向渲染模式.
*/
public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY)
第一个参数不用多说,第二个和第三个渲染模式TileMode有三个可选项
①. CLAMP:当bitmap比要绘制的图形小时拉伸位图的最后一个像素;当bitmap比要绘制的图形大时,根据绘制图形剪裁
bitmap
BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(bitmapShader);
canvas.drawRect(0, 0, bitmap.getWidth() * 2, bitmap.getHeight() * 2, paint);
评论0
最新资源