将rgb值转换为System.Drawing

时间:2010-01-13 23:43:46

标签: .net colors rgb system.drawing.color

我环顾四周,但没有看到这个问题 - 也许它太容易了,但我没有。

如果我的文件包含如下颜色值:

255, 65535, 65280(我认为这是绿色的)

有没有办法:

  1. 将这些转换为System.Drawing.Color类型或....更好..
  2. 让.NET接受它们来表示颜色吗?
  3. 谢谢,

2 个答案:

答案 0 :(得分:2)

这是您使用颜色类型的方式:

dim someColor as Color = color.FromArgb(red, green, blue)
  • 请务必使用Imports System.Drawing
  • 将红色,绿色和蓝色更改为各自的rgb值(即:0-255)

答案 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)=红色。我不确定你的数字是否是正确的顺序,这就是为什么我已经涵盖了明确的解包技术。