Android进阶学习-着色器/渲染器

    Android绘图支持里面有有一个叫做Shader的东西,翻译过来就是叫做着色器,渲染器.作用是用来实现一种渐变,渲染的效果,其实就是填充.

    一共有5种Shader:

    BitmapShader    //位图

    LinearGradient    //线性

    RadialGradient    //光束

    SweepGradient    //梯度

    ComposeGradient    //混合

 

除了BitmapShader之外,其他的真的是产生渐变效果,而BitmapShader则是生成一个图像,类似于Photoshop的图像填充,它的作用是通过Paint对Canvas进行制定的Bitmap填充,填充模式有下面几种:

    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的小例子,下面的其他几个着色器就等大家动手去做啦.也可以看看这个博客

参考:Canvas使用7行代码自定义圆形头像

转载于:https://my.oschina.net/august1996/blog/679320

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值