Shader 之 BitmapShader

Shader 又被称之为着色器,渲染器,它用来实现一系列的渐变,渲染效果。Android中的Shader包括以下几种:
1.BitmapShader 位图Shader
2.LinearGradient 线性Shader
3.RadialGradient 光束Shader
4.SweepGradient 梯度Shader
5.ComposeShader 混合Shader

BitmapShader的作用就是通过Paint对画布进行置顶Bitmap的填充,填充时有以下几种模式可以选择:
1.CLAMP 拉伸 拉伸的是图片最后的哪一个像素,不断重复
2.REPEAT 重复 横向、纵向不断重复
3.MIRROR 镜像 横向不断翻转重复,纵向不断翻转重复

以下例子,将一个矩形的图片,变成一张圆形的图片:

package com.example.administrator.myapplication;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by Administrator on 2015/11/25 0025.
 */
public class XfermodeView extends View {

    Paint paint;
    public XfermodeView(Context context) {
        super(context);
        init1();
    }

    public XfermodeView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init1();
    }


    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawCircle(500,250,200,paint);

    }

    public  void init1(){
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.test);
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
       paint = new Paint();
        paint.setShader(bitmapShader);

    };
















}

这里写图片描述

下面把图片换成较小的ic_launcher图标,并且设置为REPEAT
如下:

   Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
       paint = new Paint();
        paint.setShader(bitmapShader);

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值