[英]Get a color from 16-bits
我正在玩 C# 中的 colors,我想知道如何從 16 位字節數組中獲取顏色值。 下面是我使用 32 位字節數組的代碼。
var colorArray = new Color[b.Length/4];
for (var i = 0; i < b.Length; i += 4)
{
var color = Color.FromArgb(b[i + 0], b[i + 1], b[i + 2], b[i + 3]);
colorArray[i / 4] = color;
}
您基本上將每個字段的最高有效位以其新格式移動到正確的位置,並將任何丟失的位屏蔽為零。 綠色被分成兩個字節。 如果數組是一個 16 位整數的數組,這會更容易,但如果它是字節,那么一對字節的位操作大致是這樣的。
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
| byte1 | byte0 |
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
| - | Red | Green | Blue |
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
B8 = (byte0 << 3) & 0xF8;
G8 = ((byte1 << 6) & 0xC0) || ((byte0 >> 2) & 0x38);
R8 = (byte1 << 1) & 0xF8;
B8G8R8 = B8 | (G8 << 8) || (R8 << 16);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.