我环顾四周,但没有看到这个问题 - 也许它太容易了,但我没有。
如果我有包含颜色值的文件,例如:
255、65535、65280(我认为这是绿色的)
有没有办法:
- 将这些转换为 System.Drawing.Color 类型或..更好..
- 让.NET 接受它们来代表颜色吗?
谢谢,
我环顾四周,但没有看到这个问题 - 也许它太容易了,但我没有。
如果我有包含颜色值的文件,例如:
255、65535、65280(我认为这是绿色的)
有没有办法:
谢谢,
这是您使用颜色类型的方式:
dim someColor as Color = color.FromArgb(red, green, blue)
Imports System.Drawing
从您对该答案的早期版本的评论来看,文件中的每个数字似乎代表一种颜色,并且这些是打包字节:
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) = 红色。我不确定您的号码是否按正确的顺序排列,这就是我介绍显式拆包技术的原因。