如何在Processing中将字符串格式的十六进制颜色值转为可用颜色值?
Processing中把十六进制颜色字符串转为可用颜色值的方法
方法1:利用unhex()结合位运算补全Alpha通道
Processing的unhex()能把十六进制字符串转成整数,但6位颜色字符串转出来的是纯RGB值,而Processing的color类型是ARGB格式(包含透明度),直接用会有问题。解决步骤:
- 先去掉字符串开头的
#,比如把"#C990C0"处理成"C990C0" - 用
unhex()转成整数后,和0xFF000000做按位或运算,补上不透明的Alpha通道 - 直接传给
fill()或stroke()即可使用
示例代码:
String hexColorStr = "#C990C0"; // 去除#号 String cleanHex = hexColorStr.substring(1); // 生成带Alpha通道的颜色值 int colorVal = 0xFF000000 | unhex(cleanHex); // 调用绘图函数使用 fill(colorVal); rect(50, 50, 100, 100);
方法2:手动拆分RGB分量构建颜色
如果想直观控制每个颜色通道,可以拆分字符串获取红、绿、蓝分量,再用color()生成颜色:
- 同样先去掉
#号 - 分别截取前两位、中间两位、最后两位,用
unhex()转成0-255的整数 - 传入
color(r, g, b)或color(r, g, b, a)(a为透明度,取值0-255)
示例代码:
String hexColorStr = "#C990C0"; String cleanHex = hexColorStr.substring(1); // 拆分RGB分量 int r = unhex(cleanHex.substring(0, 2)); int g = unhex(cleanHex.substring(2, 4)); int b = unhex(cleanHex.substring(4, 6)); // 生成颜色,可按需添加透明度参数 int colorVal = color(r, g, b); fill(colorVal); ellipse(200, 100, 100, 100);
补充说明
- 若处理的是带Alpha的8位十六进制字符串(如
#FFC990C0),直接去掉#后用unhex()转成整数就能用,无需额外补Alpha - 两种方法均无需额外Java库,完全依赖Processing自带函数实现
内容的提问来源于stack exchange,提问作者chemFour
相关产品推荐
相关产品推荐

