博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊聊Color中的alpha值
阅读量:6683 次
发布时间:2019-06-25

本文共 2130 字,大约阅读时间需要 7 分钟。

  hot3.png

本文主要介绍下java Color对象中的alpha值。

alpha

java/awt/Color.java

/**     * Creates an opaque sRGB color with the specified red, green,     * and blue values in the range (0 - 255).     * The actual color used in rendering depends     * on finding the best match given the color space     * available for a given output device.     * Alpha is defaulted to 255.     *     * @throws IllegalArgumentException if r, g     *        or b are outside of the range     *        0 to 255, inclusive     * @param r the red component     * @param g the green component     * @param b the blue component     * @see #getRed     * @see #getGreen     * @see #getBlue     * @see #getRGB     */    public Color(int r, int g, int b) {        this(r, g, b, 255);    }    /**     * Creates an sRGB color with the specified red, green, blue, and alpha     * values in the range (0 - 255).     *     * @throws IllegalArgumentException if r, g,     *        b or a are outside of the range     *        0 to 255, inclusive     * @param r the red component     * @param g the green component     * @param b the blue component     * @param a the alpha component     * @see #getRed     * @see #getGreen     * @see #getBlue     * @see #getAlpha     * @see #getRGB     */    @ConstructorProperties({"red", "green", "blue", "alpha"})    public Color(int r, int g, int b, int a) {        value = ((a & 0xFF) << 24) |                ((r & 0xFF) << 16) |                ((g & 0xFF) << 8)  |                ((b & 0xFF) << 0);        testColorValueRange(r,g,b,a);    }

java里头的color不指定alpha的话,默认其值为255,也就是没有透明度。

opacity

color对象里头的alpha其实是指不透明度,其值范围为0-255,越大越不透明。 其通常对应opacity,这个就是单词语义表达的不透明度,其值范围[0,1.0f],值越大,越不透明。

opacity与alpha的映射

opacity与alpha之间的主要关系列表如下

100% — FF95% — F290% — E685% — D980% — CC75% — BF70% — B365% — A660% — 9955% — 8C50% — 8045% — 7340% — 6635% — 5930% — 4D25% — 4020% — 3315% — 2610% — 1A5% — 0D0% — 00

这个怎么转义呢,如下

int alpha = Math.round(opacity * 255);

再将int输出为十六进制的表示方式

String hex = Integer.toHexString(alpha).toUpperCase();        if (hex.length() == 1){            hex = "0" + hex;        }

不足两位往前不零

doc

转载于:https://my.oschina.net/go4it/blog/1557946

你可能感兴趣的文章
apache2.4.1+mysql5.5.21+php5.4.0安装实践(二)
查看>>
LintCode 最大正方形
查看>>
python三方库之requests-快速上手
查看>>
PowerShell 获取Site Collection下被签出的文件
查看>>
见见面、聊聊天 - 5月22日晚7点Meetup,三里屯绿树旁酒吧,畅谈云技术和应用
查看>>
常用的HTML5、CSS3新特性能力检测写法
查看>>
安卓巴士诚招版主,希望各位巴友踊跃加入我们!
查看>>
【笔记】一些linux实用函数技巧【原创】
查看>>
JS验证集合
查看>>
第05篇:C#星夜拾遗之使用数据库
查看>>
现代软件工程讲义 4 方法论 - MSF
查看>>
线程同步工具类
查看>>
web服务器比较(IIS,Tomcat,Apache,Resin )
查看>>
协变和逆变之疑问
查看>>
Form Head Data
查看>>
UITextField的总结
查看>>
linux 自旋锁和信号量【转】
查看>>
匿名函数
查看>>
Android模拟器上网的设置
查看>>
Cannot get WiFi AP state 错误
查看>>