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

Android高级渲染Shader(二)

作者头像
aruba
发布2020-07-03 11:03:07
2770
发布2020-07-03 11:03:07
举报
文章被收录于专栏:android技术android技术
除了BitmapShader外,还有几种渲染
1.LinearGradient--线性渲染
参数
  • float left 渲染区域的左坐标
  • float top 渲染区域的上坐标
  • float right 渲染区域的右坐标
  • float bottom 渲染区域的下坐标
  • float colors[] 渲染的颜色数组
  • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分
  • TileMode tile 拉伸模式
代码语言:javascript
复制
   private int[] colors = new int[]{Color.RED,Color.GREEN,Color.BLUE};
    /**
     * 线性渲染
     * @param canvas
     */
    private void drawLinearGradient(Canvas canvas){
        LinearGradient linearGradient = new LinearGradient(0,0,400,400,colors,null, Shader.TileMode.CLAMP);
        paint.setShader(linearGradient);

        canvas.drawRect(0,0,400,400,paint);
    }

LinearGradient.jpg

2.SweepGradient--渐变渲染/梯度渲染
参数
  • float cx 渲染区域的X坐标
  • float cy 渲染区域的Y坐标
  • float colors[] 渲染的颜色数组
  • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分
代码语言:javascript
复制
    /**
     * 梯度渲染/渐变渲染
     * @param canvas
     */
    private void drawSweepGradient(Canvas canvas){
        SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);
        paint.setShader(sweepGradient);

        canvas.drawRect(0,0,400,400,paint);
    }

SweepGradient.jpg

3.RadialGradient--环形渲染
参数
  • float cx 渲染区域的圆心X坐标
  • float cy 渲染区域的圆心Y坐标
  • float radius 渲染圆形半径
  • float colors[] 渲染的颜色数组
  • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分,最大位置参照半径,超过半径显示最后一个颜色
  • TileMode tileMode 拉伸模式

RadialGradient.jpg

4.ComposeShader--组合渲染
参数
  • Shader shaderA 渲染效果A
  • Shader shaderB 渲染效果B
  • PorterDuff.Mode mode 组合模式
代码语言:javascript
复制
    /**
     * 组合渲染
     * @param canvas
     */
    private void drawComposeShader(Canvas canvas){
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
        SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);
        ComposeShader composeShader = new ComposeShader(bitmapShader,sweepGradient, PorterDuff.Mode.ADD);
        paint.setShader(composeShader);

        canvas.drawRect(0,0,1000,1000,paint);
    }

ComposeShader.jpg

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 除了BitmapShader外,还有几种渲染
    • 1.LinearGradient--线性渲染
      • 参数
        • 2.SweepGradient--渐变渲染/梯度渲染
          • 参数
            • 3.RadialGradient--环形渲染
              • 参数
                • 4.ComposeShader--组合渲染
                  • 参数
                  • 项目地址:https://gitee.com/aruba/ShaderApplication.git
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档