2010-04-08 5 views
2

Quel serait le meilleur format pour représenter numériquement une couleur dans .NET afin de ne pas avoir à utiliser l'objet Couleur? En ce moment je sauve la couleur en tant que représentation HTML, mais pour l'utiliser je dois l'analyser.Représentation numérique d'une couleur

Je travaille avec un canevas 800x600 qui stocke une valeur de couleur pour chaque pixel et je dois être en mesure de rendre la couleur aussi rapide que possible sans gonfler mon application pour stocker des objets couleur 500k +.

+0

Les couleurs 16 ou 32 bits peuvent évidemment être stockées dans n'importe quel type de données 16 ou 32 bits. –

Répondre

6

Vous pouvez utiliser un Int32 standard pour stocker une couleur.

Ceci est particulièrement agréable parce que les types de couleurs dans le cadre le supportent directement via Color.ToArgb() et Color.FromArgb() et des méthodes similaires.

4

Une couleur est une valeur RGBA RVB 24 bits ou 32 bits - facilement représentée dans un int 32 bits. La structure Color enveloppe juste cela pour rendre l'accès plus pratique, mais si vous passez à un niveau bas (données de pixels ou de palettes dans un pixel bitmap), c'est tout.

Si vous stockez un large éventail de couleurs, puis utilisez un Bitmap et simplement définir/lire la valeur de pixel pour l'emplacement qui vous intéresse.

1

Une instance de la structure de couleur a seulement 4 membres (Alpha, Rouge, Vert, Bleu), chacun de type Byte. Donc, vous pouvez simplement stocker chaque couleur en utilisant un entier 32 bits à la place, mais vous pouvez être déçu de la quantité de mémoire que vous finissez par sauvegarder, le cas échéant ...

Bien sûr, si vous n'avez pas besoin des 4 canaux de couleur , vous pouvez utiliser une structure plus petite pour stocker uniquement les canaux dont vous avez besoin (par exemple, utilisez simplement un octet pour stocker du rouge) et économisez un peu d'espace.

Questions connexes