java中将颜色值和透明度能否转换成一个16进制

 我来答
雪飞潇潇
2019-05-17 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:873万
展开全部

可以啊; 你只需要了解颜色的基本原理,代码很容易就写出来了;屏幕显示的颜色就RGB三种颜色加上透明度构成的;

  • #FF0000 红色

  • #00FF00绿色

  • #0000FF蓝色

  • #0000FFCC蓝色+透明度

java参考代码如下

import java.awt.Color;

public class ColorDemo {
public static void main(String[] args) {
// java.awt.Color类 或者使用自定义的颜色类, 只要包含r,g,b,a四个属性就可以了
Color c1 = new Color(50, 0, 210, 204);
System.out.println(awtColorToWeb(c1));
}

public static String awtColorToWeb(Color c1) {
StringBuilder builder = new StringBuilder();
//builder.append("0x");//16进制的标识
builder.append("#");//web16进制颜色开头的字符
builder.append(getString(c1.getRed()));//红色转16进制
builder.append(getString(c1.getGreen()));//绿色转16进制
builder.append(getString(c1.getBlue()));//蓝色转16进制
builder.append(getString(c1.getAlpha()));//透明度转16进制
return builder.toString();
}

public static String getString(int value){
String str=Integer.toHexString(value);//把单色转成16进制
return str.length()==1?"0"+str:str;
//用2个16进制的数字个字符来表示;所以长度不足就补0
//比如 "6"-->"06"
}
}

如果你使用javafx的Color类, 那会让你觉得很简便 . 因为Color toString() 打印出来就是16进制的颜色.

javafx里颜色参考如下

import javafx.scene.paint.Color;

public class ColorDemo {
public static void main(String[] args) {
//使用的javafx的Color
Color c1 = Color.rgb(50, 0, 210, 0.8);
System.out.println(c1);//直接就是输出16进制的颜色

Color c2=Color.valueOf("#3200d2cc");//web颜色轻松转16进制
System.out.println(c2);

//web颜色 #AABBCCDD-->可简写成-->ABCD
Color c3=Color.valueOf("567c");//web颜色简写也支持
System.out.println(c3);

}

}

拓展了解:  JavaFX是现代化的图形界面框架, 支持动画, 多媒体,3D ,WebView 甚至支持HTML5,事件绑定进制 配合lambda表达式, 代码简洁功能强大;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式