简介
Android绘图支持里面有有一个叫做
Shader
的东西,翻译过来就是叫做着色器,渲染器.作用是用来实现一种渐变,渲染的效果,其实就是填充。
5种Shader
- BitmapShader //位图
- LinearGradient //线性
- RadialGradient //光束
- SweepGradient //梯度
- ComposeGradient //混合
除了
BitmapShader
之外,其他的真的是产生渐变效果
而BitmapShader
则是生成一个图像,类似于Photoshop的图像填充,它的作用是通过Paint
对Canvas
进行制定的Bitmap
填充
3种填充模式
- CLAMP //拉伸填充
- REPEAT //横纵向重复填充
- MIRROR //横向,纵向不断翻转
既然我们可以选择
Bitmap
去作为图像填充,那么我们可不可以实现这种圆形头像的效果呢?
肯定是可以的,我们可以用Bitmap
去填充一个圆,在这篇文章的基础上做修改
修改process函数:
public void process(View v) {
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.jpg);
BitmapShader mBitmapShader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setShader(mBitmapShader);
Bitmap destBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(destBitmap);
/**
* 以上设置BitmapShader到Paint里
* 下面就是使用这个填充去画一个圆
*/
canvas.drawCircle(mBitmap.getWidth() / 2, mBitmap.getHeight() / 2,
(Math.min(mBitmap.getWidth(), mBitmap.getHeight())) / 2, mPaint);
((ImageView)
findViewById(R.id.img)).setImageBitmap(destBitmap);
}
这是一个应用
BitmapShader
的小例子,下面的其他几个着色器就等大家动手去做啦.也可以看看这个博客