java中将颜色值和透明度能否转换成一个16进制
发布网友
发布时间:2022-05-02 00:23
我来回答
共1个回答
热心网友
时间:2022-04-23 03:43
可以啊; 你只需要了解颜色的基本原理,代码很容易就写出来了;屏幕显示的颜色就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表达式, 代码简洁功能强大;