LinearGradient线性渲染

LinearGradient线性渲染

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.view.View;

/**
 * @version 2012-8-14 上午10:45:28
 **/
public class myGameView extends View implements Runnable {
    int bitwidth = 0;
    int bitheight = 0;
    Paint mPaint = null;
    // 线性渐变渲染
    Shader mLinearGradient1 = null;
    // 线性渐变渲染
    Shader mLinearGradient2 = null;
    // 线性渐变渲染
    Shader mLinearGradient3 = null;

    public myGameView(Context context) {
        super(context);
        // 创建LinearGradient并设置渐变颜色数组
        // 第一个,第二个參数表示渐变起点 能够设置起点终点在对角等任何位置
        // 第三个,第四个參数表示渐变终点
        // 第五个參数表示渐变颜色
        // 第六个參数能够为空,表示坐标,值为0-1 new float[] {0.25f, 0.5f, 0.75f, 1 }
        // 假设这是空的。颜色均匀分布,沿梯度线。
        // 第七个表示平铺方式
        // CLAMP反复最后一个颜色至最后
        // MIRROR反复着色的图像水平或垂直方向已镜像方式填充会有翻转效果
        // REPEAT反复着色的图像水平或垂直方向
        mLinearGradient1 = new LinearGradient(0, 0, 0, 100, new int[] {
                Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                Shader.TileMode.CLAMP);
        mLinearGradient2 = new LinearGradient(0, 0, 0, 100, new int[] {
                Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                Shader.TileMode.MIRROR);
        mLinearGradient3 = new LinearGradient(0, 0, 0, 100, new int[] {
                Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                Shader.TileMode.REPEAT);
        mPaint = new Paint();
        new Thread(this).start();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // LinearGradient的高度仅仅有100而绘制的矩形有200所以才会有反复
        // 假设高度两者同样clamp反复是看不出效果的
        Paint paint = new Paint();
        paint.setTextSize(20);
        paint.setColor(Color.WHITE);
        // 绘制渐变的矩形
        mPaint.setShader(mLinearGradient1);
        canvas.drawRect(0, 0, 200, 200, mPaint);
        canvas.drawText("CLAMP", 0, 200 + 20, paint);
        // 绘制渐变的矩形
        mPaint.setShader(mLinearGradient2);
        canvas.drawRect(0, 250, 200, 450, mPaint);
        canvas.drawText("MIRROR", 0, 450 + 20, paint);
        // 绘制渐变的矩形
        mPaint.setShader(mLinearGradient3);
        canvas.drawRect(0, 500, 200, 700, mPaint);
        canvas.drawText("REPEAT", 0, 700 + 20, paint);
    }

    @Override
    public void run() {
        while(!Thread.currentThread().isInterrupted()) {
            try {
                Thread.sleep(100);
            }
            catch(Exception e) {
                Thread.currentThread().interrupt();
            }
            postInvalidate();
        }
    }
}

效果图


LinearGradient线性渲染

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117854.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android Studio 提示 Unable to access Android SDK add-on list解决方法

    Android Studio 提示 Unable to access Android SDK add-on list解决方法

    2021年10月1日
    123
  • Bilateral Filters(双边滤波算法)原理及实现

    Bilateral Filters(双边滤波算法)原理及实现双边滤波算法原理:双边滤波算法实现:双边滤波算法实例:参考:http://people.csail.mit.edu/sparis/bf/http://blog.csdn.net/fightingforcv/article/details/52723376http://blog.csdn.net/mumu

    2022年5月2日
    28
  • windows安装虚拟机(VMware)

    windows安装虚拟机(VMware)引言:最近想要安装一个linux,根据实际我决定安装在虚拟机上,于是先动手安装一个虚拟机。参考:centos详细版本介绍参考:“网络选择安装部分”通俗讲解资源:阿里云开源镜像站环境:本机环境:windows764bit内存:8GB1600MHZCPU:Corei54210M双核双线程VMware镜像:VMware-workstation…

    2022年9月12日
    0
  • hive sql和sql的区别是什么_hives

    hive sql和sql的区别是什么_hives区别:1、Hive-sql不支持等值连接,而sql支持;2、Hive-sql不支持“Insertinto表Values()”、UPDATA、DELETE操作,而sql支持;3、Hive-sql不支持事务,而sql支持。总体来说hiveSQL与SQL基本上一致,最初的设计目的就是为了让会SQL但是不会编程MapReduce的人也能使用Hadoop进行数据处理。1、Hive不支持等值连接不支持等…

    2022年9月27日
    0
  • 所有方向你要的资料干货这都有,从入门到实战!【CSDN宝藏资料图鉴第一期】「建议收藏」

    前言CSDN是全球知名的开发者社区,创建于1999年,经过20来年的知识文档积累已然成为中文开发者的知识宝库;从基础的法入门到蜕变实战案例、从神秘前沿技术到清晰的实践步骤,可以说CSDN是你找寻资料的最佳宝库,只要你想得到,在这里就可以找得到!今天我们就来深拔一期有质量的专栏和资源,这些专栏作者可能有些是在校大学生、有些是某领域内的行内大牛,但并不影响他们的文章通俗易懂并且富有深度。从在校大学生我们看到了新一代的奋进,从领域大牛身上我们也看到了无私的技术分享,希望有质量的文章越来越多,共同为行业的进步

    2022年4月16日
    44
  • siamfc代码解读_siamfc-pytorch代码讲解(一):backbone&head

    siamfc代码解读_siamfc-pytorch代码讲解(一):backbone&head最近才真正开始研究目标跟踪领域(好吧,是真的慢)。就先看了一篇论文:Fully-ConvolutionalSiameseNetworksforObjectTracking【ECCV2016workshop】又因为学的是PyTorch框架,所以找了一份比较clean的代码,还是pytorch1.0的:https://github.com/huanglianghua/siamfc-pyto…

    2022年10月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号