Android进阶学习-着色器/渲染器
Android进阶学习-着色器/渲染器
August1996_ 发表于2年前
Android进阶学习-着色器/渲染器
  • 发表于 2年前
  • 阅读 13
  • 收藏 0
  • 点赞 2
  • 评论 0

    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行代码自定义圆形头像

共有 人打赏支持
粉丝 3
博文 51
码字总数 29055
×
August1996_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: