我环顾四周,但没有看到这个问题 - 也许它太容易了,但我没有。
如果我的文件包含如下颜色值:
255, 65535, 65280(我认为这是绿色的)
有没有办法:
谢谢,
答案 0 :(得分:2)
这是您使用颜色类型的方式:
dim someColor as Color = color.FromArgb(red, green, blue)
Imports System.Drawing
答案 1 :(得分:1)
根据您对此答案早期版本的评论,文件中的每个数字似乎都代表一种颜色,而这些数字是打包字节:
65280 (= 0xFF00) -> (0, 255, 0)
65535 (= 0xFFFF) -> (255, 255, 0)
所以你想要三元组的第一个(红色?)部分的低字节,以及三元组的第二个(蓝色?)部分的下一个高字节。我猜测超过65535的值将进入三元组的第三个字节。
您可以使用位屏蔽和位移运算符轻松完成此操作:
int r = n && 0xFF;
int g = (n >> 8) & 0xFF;
int b = (n >> 16) & 0xFF;
即。每次向右移8位,并选出最后8位。
注意:您也可以使用Color.FromArgb(Int32)直接执行此操作,这样您就不必进行解包。但只有在文件中的数字以正确的方式打包时,这才有效。它们需要采用AARRGGBB格式。例如,255(0x000000FF)=蓝色,65280(0x0000FF00)=绿色,16711680(0x00FF0000)=红色。我不确定你的数字是否是正确的顺序,这就是为什么我已经涵盖了明确的解包技术。