|
|||||
Canvas Couleurs Pixels Palettes
BitmapsLe format utilisé par windows pour stocker des images sur disque (fichiers à extension .bmp) et aussi en mémoire est le format Bitmap. Le format d'un bitmap est compliqué car il doit supporter les formats de 1 bit à 32 bits, les optimiser, gérer la palette associée s'il y a lieu, et finalement constituer les informations sur sa structure pour les enregistrer. De plus, les bitmaps héritent de la longue histoire des différentes versions de Windows et même d'OS2. Par exemple, les lignes de fin sont curieusement stockées au début, car autrefois certains moniteurs affichaient les images plus vite avec cette disposition. Nous n'allons donc pas étudier les bitmaps en détail. Nous préférons approfondir les techniques les plus intéressantes pour le traitement des images, à savoir les bitmaps 24 bits (16 millions de couleurs) et les scanlines.
Formats des bitmaps - Pixelformat
La propriété PIXELFORMAT d'un Tbitmap existe à partir de Delphi3.
Note 1 - Windows gère en mémoire 2 sortes de
Bitmaps Les Device-independent bitmaps (DIB) contiennent le format et la résolution périphérique sur lequel l'image a été créée.Ils stockent aussi la palette correspondante et le mode de compression. Note 2 - En Delphi, lorsque l'on crée un bitmap (Bmp0 := Tbitmap.create), et si vous omettez soit d'assigner son PixelFormat soit son HandleType, un Device-Dependent Bitmap (DDB) est créé avec un PixelFormatvalant pfDevice, et le HandleType sera bmDDB Si en revanche vous affectez un PixelFormat autre que pfDevice (ex: Bmp0.pixelformat := pf24bit) ou si vous spécifiez un HandleType = bmDIB, vous obtenez un Device Independent Bitmap (DIB). Note 3 - Kylix supporte les PixelFormats suivants : pf1bit, pf8bit, pf16bit, pf32bit, pfCustom Pour tout les PixelFormats, la dimension de chaque scanline est ajustée au double mot. Exemple Lecture d'un bitmap au format Pf24bit dans
une variable globale
Exemple Lecture d'un bitmap au format Pf24bit dans
une variable locale
Création d'un bitmap vide peint en blanc
Copie d'un bitmap dans un autre
Assign crée simplement un pointeur de Bmp0 vers Bmp1. Mais dès que l'on modifie Bmp1 (ou bmp0) les bitmaps sont dissociés, c'est à dire que Delphi crée une copie complète de Bmp0 avant que la modification ne devienne effective. Autre possibilité
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Retour | Suite |