Frage

Ich benutze BitConverter.ToInt32 zu packen 3 byte Werte in an int, wie so:

byte R = 0;
byte G = 0;
byte B = 0;
int i = BitConverter.ToInt32(new byte[] { R, G, B, 0 }, 0);

Gibt es einen schnelleren Weg, dies zu tun, der nicht die Schaffung eines neuen beinhaltet int jedes Mal? Die Bytes aus einem herausholen int ist einfach:

int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);

Gibt es eine einfache Möglichkeit, diesen Prozess umzukehren und die RGB-Bytes mit Bitverschiebung über einen vorhandenen zu schreiben? int?

War es hilfreich?

Lösung

int i = (B << 0) | (G << 8) | (R << 16);

Andere Tipps

Sie sollten die berücksichtigen Farbstruktur. Es hat R-, G- und B -Eigenschaften sowie aus Methoden von argb () und toArgb ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top