Android Shader渲染器:BitmapShader

public class BitmapShader extends Shader

BitmapShader,  Shader家族的 专门处理图片渲染的

构造方法:

public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY)

bitmap:原图

tile直译为 瓷砖,瓦片。这里的TileMode 可看成是 铺图的模式。

tileX, tileY:x/y 方向铺图的模式

public enum TileMode {
    CLAMP   (0),
    REPEAT  (1),
    MIRROR  (2);
    TileMode(int nativeInt) {
        this.nativeInt = nativeInt;
    }
    final int nativeInt;
}

CLAMP:如果超出原始bounds(即原图的边界),则重复边缘上的color

REPEAT:重复bitmap

MIRROR:重复bitmap,与REPEAT不同的时,它是镜像重复,即:反向重复

例:

public class BitmapShaderView extends View {

    private BitmapShader mBitmapShader;
    private ShapeDrawable mShapeDrawable;

    public BitmapShaderView(Context context, Bitmap bitmap) {
        super(context);

        mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

        mShapeDrawable = new ShapeDrawable(new OvalShape());
        mShapeDrawable.getPaint().setShader(mBitmapShader);
//        mShapeDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); //原图大小
        mShapeDrawable.setBounds(0, 0, bitmap.getWidth() * 2, bitmap.getHeight() * 2);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.CYAN);

        mShapeDrawable.draw(canvas);
    }
}

在Activity中,setContentView(new BitmapShaderView(context, bitmap));

原图                                                                                                       效果图

   x和y
边缘重复

改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR, Shader.TileMode.REPEAT);

效果

 x方向镜像重复;y方向重复

改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR);

效果:

 x方向重复;y方向镜像重复

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 21:57:13

Android Shader渲染器:BitmapShader的相关文章

Android 颜色渲染(四) BitmapShader位图渲染

版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色处理(四) BitmapShader位图渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲染器(Shader). bitmap   在渲染器内使用的位图 tileX      The tiling mode for x to draw the bitmap in.  

Android Shader渲染以及实现水波纹霓虹文字雷达等效果

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Android Shader渲染以及实现水波纹霓虹文字雷达等效果 - lzy的博客 - 博客频道 - CSDN.NET lzy的博客 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &a

android的shader渲染器

android里边的渲染器的使用主要是shader的子类,shader继承自object,他的子类有: 1.BitMapShader:BitMapShader 是bitmap渲染器,看名字就知道, BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置. 这里我们只关注BitmapShader,构造方法: mBitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileM

Android中自定义视图View之---渲染器Shader对象

下面再来看下一个知识点:颜色渲染Shader对象 为什么我要把Shader对象单独拿出来说一下呢?因为这个对象在对于我们处理图形特效的时候是非常有用的 下面来看一下Android中Shader对象 在Android Api中关于颜色渲染的几个重要的类:Shader,BitmapShader,ComposeShader,LinearGradient,RadialGradient,SweepGradient它们之间的关系是: Shader是后面几个类的父类 该类作为基类主要是返回绘制时颜色的横向跨度

通过渲染器Shader实现图像变换效果

在上一篇文章中,一起学习了通过设定画笔风格来实现图形变换,没读过的朋友可以点击下面链接: http://www.cnblogs.com/fuly550871915/p/4886455.html 是不是觉得自己学到的知识更多了呢?那么再多学一点总没坏处.在本篇文章中,将会一起学习通过给画笔设定Shader属性,实现图形变换.并带领读者一起实现两个实际例子,图片渲染器和线性渲染器.有没有发现我们的画笔特别强大呢??确实,我们曾经给它设置过颜色矩阵属性,设置过xfermode风格属性,现在又来设定Sh

Android学习笔记进阶15之Shader渲染

Android提供的Shader类主要是渲染图像以及一些几何图形. Shader有几个直接子类: BitmapShader    : 主要用来渲染图像 LinearGradient  :用来进行线性渲染 RadialGradient  : 用来进行环形渲染 SweepGradient   : 扫描渐变---围绕一个中心点扫描渐变就像电影里那种雷达扫描,用来梯度渲染. ComposeShader   : 组合渲染,可以和其他几个子类组合起来使用. 1   BitmapShader 渲染器着色一个位

Android Shader 颜色、图像渲染 paint.setXfermode

Shader Shader是一个基类,表示在绘制期间颜色的水平跨度 它的子类被嵌入在Paint中使用,调用paint.setShader(shader). 除Bitmap外的其他对象,使用该Paint进行绘制时.将从shader中获得颜色 Shader.TileMode 渲染模式 public enum TileMode { CLAMP (0), REPEAT (1), MIRROR (2); TileMode(int nativeInt) { this.nativeInt = nativeIn

Android Shader 颜色、图像渲染

Shader Shader是一个基类,表示在绘制期间颜色的水平跨度 它的子类被嵌入在Paint中使用,调用paint.setShader(shader). 除Bitmap外的其它对象,使用该Paint进行绘制时,将从shader中获得颜色 Shader.TileMode 渲染模式 public enum TileMode { CLAMP (0), REPEAT (1), MIRROR (2); TileMode(int nativeInt) { this.nativeInt = nativeIn

基于OpenGL编写一个简易的2D渲染框架-09 重构渲染器-Shader

Shader 只是进行一些简单的封装,主要功能: 1.编译着色程序 2.绑定 Uniform 数据 3.根据着色程序的顶点属性传递顶点数据到 GPU 着色程序的编译 GLuint Shader::createShaderProgram(const char* vsname, const char* psname) { std::string vShaderSource, fShaderSource; std::ifstream vShaderFile, fShaderFile; vShaderF