前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android高级渲染Shader-BitmapShader

Android高级渲染Shader-BitmapShader

作者头像
aruba
发布2020-07-03 10:52:17
8130
发布2020-07-03 10:52:17
举报
文章被收录于专栏:android技术
我们在自定义控件的onDraw()方法中,使用Canvas的drawXX方法画各种形状,而画笔的Shader是用于图形的着色和外观,Shader即着色器
BitmapShader--位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说就是用图片对图形进行贴图
代码语言:javascript
复制
    /**
     * Call this to create a new shader that will draw with a bitmap.
     *
     * @param bitmap The bitmap to use inside the shader
     * @param tileX The tiling mode for x to draw the bitmap in.
     * @param tileY The tiling mode for y to draw the bitmap in.
     */
    public BitmapShader(@NonNull Bitmap bitmap, @NonNull TileMode tileX, @NonNull TileMode tileY) {
        this(bitmap, tileX.nativeInt, tileY.nativeInt);
    }
实例化BitmapShader需要三个参数
  • Bitmap
  • X轴的拉伸模式
  • Y轴的拉伸模式
拉伸模式分为三种
  • CLAMP --是拉伸最后一个像素铺满
  • MIRROR ---是横向纵向不足处不断翻转镜像平铺
  • REPEAT ---类似电脑壁纸,横向纵向不足的重复放置
CLAMP模式
代码语言:javascript
复制
    private void drawClampBitmapShader(Canvas canvas){
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
        paint.setShader(bitmapShader);

        RectF rect = new RectF(0,0,800,100);
        canvas.drawRect(rect,paint);
    }

CLAMP效果.jpg

MIRROR模式
代码语言:javascript
复制
    private void drawMirrorBitmapShader(Canvas canvas) {
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR,Shader.TileMode.MIRROR);
        paint.setShader(bitmapShader);

        RectF rect = new RectF(0,0,1000,1000);
        canvas.drawRect(rect,paint);
    }

MIRROR效果.jpg

REPEAT模式
代码语言:javascript
复制
    private void drawRepeatBitmapShader(Canvas canvas) {
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
        paint.setShader(bitmapShader);

        RectF rect = new RectF(0,0,1000,1000);
        canvas.drawRect(rect,paint);
    }

REPEAT效果.jpg

项目地址:https://gitee.com/aruba/ShaderApplication.git
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们在自定义控件的onDraw()方法中,使用Canvas的drawXX方法画各种形状,而画笔的Shader是用于图形的着色和外观,Shader即着色器
    • BitmapShader--位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说就是用图片对图形进行贴图
      • 实例化BitmapShader需要三个参数
        • 拉伸模式分为三种
          • CLAMP模式
            • MIRROR模式
              • REPEAT模式
              • 项目地址:https://gitee.com/aruba/ShaderApplication.git
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档