您的位置:首页 > 移动开发 > Android开发

Shader 之 BitmapShader

2015-11-25 16:22 429 查看
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);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息