在 C# 中将整数映射为 RGB 颜色

发布于 2024-11-09 14:30:55 字数 79 浏览 4 评论 0原文

现在我有一个 0 到 2^24 之间的数字,我需要将它映射到三个 RGB 值。我在如何实现这一点上遇到了一些麻烦。如有任何帮助,我们将不胜感激。

So right now I have a number between 0 and 2^24, and I need to map it to three RGB values. I'm having a bit of trouble on how I'd accomplish this. Any assistance is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半寸时光 2024-11-16 14:30:55

根据颜色所在的位置,您可以使用位移位来获取各个颜色,如下所示:

int rgb = 0x010203;
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff);

上面的表达式假定 0x00RRGGBB 但您的颜色可能是 0x00BBGGRR 在这种情况下只需更改周围的 16, 8, 0 值。

这也使用 System.Drawing.Color 而不是 System.Windows.Media.Color 或您自己的颜色类。这取决于应用程序。

Depending on which color is where, you can use bit shifting to get the individual colors like this:

int rgb = 0x010203;
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff);

The above expression assumes 0x00RRGGBB but your colors might be 0x00BBGGRR in which case just change the 16, 8, 0 values around.

This also uses System.Drawing.Color instead of System.Windows.Media.Color or your own color class. That depends on the application.

空宴 2024-11-16 14:30:55

您可以执行此操作

Color c = Color.FromArgb(someInt);

,然后分别使用 cRcGcB 表示红色、绿色和蓝色值

You can do

Color c = Color.FromArgb(someInt);

and then use c.R, c.G and c.B for Red, Green and Blue values respectively

套路撩心 2024-11-16 14:30:55

您可以使用 BitConverter 类从 int 获取字节:

byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);

该数组将有四个字节。前三个字节包含您的号码:

byte b = values[0];
byte g = values[1];
byte r = values[2];

You can use the BitConverter class to get the bytes from the int:

byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);

The array will have four bytes. The first three bytes contain your number:

byte b = values[0];
byte g = values[1];
byte r = values[2];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文