[英]Mapping an Integer to an RGB color in C#
所以現在我有一個介於 0 和 2^24 之間的數字,我需要將其 map 轉換為三個 RGB 值。 我在如何實現這一點上遇到了一些麻煩。 任何幫助表示贊賞。
你可以做
Color c = Color.FromArgb(someInt);
and then use c.R
, c.G
and c.B
for Red, Green and Blue values respectively
根據哪個顏色在哪里,您可以使用位移來獲得單個 colors,如下所示:
int rgb = 0x010203;
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff);
上面的表達式假定0x00RRGGBB
但您的 colors 可能是0x00BBGGRR
在這種情況下只需更改16, 8, 0
值。
這也使用System.Drawing.Color
代替System.Windows.Media.Color
或您自己的顏色 class。 這取決於應用程序。
您可以使用BitConverter
class 從 int 獲取字節:
byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);
該數組將有四個字節。 前三個字節包含您的號碼:
byte b = values[0];
byte g = values[1];
byte r = values[2];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.