![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||
![]() |
|
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Canvas Couleur Pixel Palette Canvas Couleurs Pixels Palette
Canvas d'affichageDelphi affiche les images sur un Canvas (canevas). Un canvas est une amélioration notable du Contexte de Dispositif de Windows (Device Context ou DC). Pour simplifier, on peut dire qu'un Contexte de Dispositif est une surface de dessin soit pour l'écran, soit pour l'imprimante, soit en mémoire. Chaque Canvas donne accès au Handle du Contexte
de Dispositif. Un handle est un nombre fourni par Windows qui représente
un objet Windows. On peut ausi considérer un handle comme une
ressource windows. Un handle permet sous Delphi d'utiliser les fonctions
GDI (Graphic Device Interface) lorsqu'une telle fonction n'existe
pas dans Delphi. Exemples de Canvas utilisés en Delphi |
Couleur | ........ |
R |
G |
B |
Noir |
0 |
0 |
0 |
|
Gris foncé | 127 | 127 | 127 | |
Blanc | 255 | 255 | 255 | |
Rouge pur | 255 |
0 |
0 |
|
Rose | 255 | 200 | 200 |
type TColor
= -(COLOR_ENDCOLORS + 1)..$02FFFFFF;
Pour gérer lescouleurs, Delphi utilise le format Tcolor , qui comporte 4 octets et correspond à la structure RGBQUAD de l'API Windows.
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
En effet, au lieu d'utiliser seulement les 3 octets
nécessaires (RGBTRIPLE) il est plus performant de manipuler
de entités de 32 bits que les 24 bits qui ne sont pas multiples
de mot (16 bits ou 32 bits).
Voir l'aide en ligne pour l'utilisation de l'octet rgbReserved
Les trois premiers octets représentent respectivement
l'intensité RGB des couleurs bleu, vert et rouge.
La valeur $00FF0000 représente un bleu pur de pleine intensité,
$0000FF00, un vert pur de pleine intensité et $000000FF, un
rouge pur de pleine intensité. $00000000 représente
le noir et $00FFFFFF, le blanc.
Si l'octet de poids fort vaut zéro (00), la couleur obtenue est celle la plus approchante dans la palette système. Si l'octet de poids fort vaut un (01), la couleur obtenue est celle la plus approchante dans la palette actuellement réalisée. Si l'octet de poids fort vaut deux (02), la couleur obtenue est celle la plus approchante dans la palette logique du contexte de périphérique en cours.
Une autre manière de représenter les couleurs est le système HSV (Hue Saturation Value). Ce codage des couleurs est plus naturel que le codage RGB. HSV, mais il utilise en principe des valeurs non entières (décimales). En conséquence il nécessite plus de place pour le stockage
Hue représente la teinte, qui est codée de 0° à 360° pour représenter les couleurs de l'arc en ciel.
Saturation représente la pureté de la couleur (de 0.0 niveau de gris à 1.0 couleur pure)
Value représente l'intensité (de 0.0 noir à 1.0 blanc).
La boite de dialogue standard de Windows (Tcolordialog) est une des représentations possibles des couleurs avec le codage HSV : le rectangle de couleurs montre les combinaisons Hue par Saturation et l'ascenseur de droite représente l'intensité (Value) de la couleur sélectionnée.
Le plus petit élément d'un canvas est
le pixel, c'est à dire un point. Pour l'affichage (Tform.canvas,
Tpaintbox.canvas ou TImage.canvas), il est évident que selon
le nombre de couleurs supportées par l'écran déterminera
la place prise pour mémoriser les pixels. Voir aussi le tableau
Bitmap - Pixelformat
Couleurs |
bits |
Monochrome | 1 |
16 | 4 |
256 | 6 |
32 768 | 16 dont 15 utiles |
65 536 | 16 |
16 millions | 24 true color |
16 millions+ | 32 real color |
De 2 à 256 couleurs, Windows utilise une Palette
pour améliorer le rendu des couleurs à l'écran.
En effet, plusieurs fenêtres peuvent être affichées
simultanément et chaque fenêtre peut avoir des palettes
différentes. On imagine la complexité des adaptations
effectuées par Windows pour afficher simultanément des
palettes différentes. Il faut aussi savoir qu'en 256 couleurs
Windows préfère nettement des palettes dont les 10 premières
et les 10 dernières couleurs sont des couleurs dites "Couleurs
système windows" : il s'agit des 16 couleurs pures plus les
4 couleurs suivantes:
Nom anglais |
....... |
Traduction |
Rang dans |
Hexadécimal |
RGB |
clMoneyGreen |
Vert Dollar |
8 |
$C0DCC0 |
192 220 192 |
|
clSkyBlue |
Bleu ciel |
9 |
$F0CAA6 |
166 202 240 |
|
clCream |
Crème |
246 |
$F0FBFF |
255 251 240 |
|
clMediumGray |
Gris moyen |
247 |
$A4A0A0 |
160 160 164 |
La conséquence de cette complexité des
palettes et de leur encapsulation dans Delphi, est qu'il vaut mieux
éviter de travailler avec des palettes. Nous choisirons donc
par la suite le format de couleurs 24 bits, ce qui correspond aux
résolutions d'écran supportées par les PC actuels.
De plus, le format de fichiers le plus utilisé sur internet,
est le format JPEG qui utilise 16 millions de couleurs.