oui il manque le var... mais uniquement pour Create et Free.
pour les autres on peu trés bien travailler sur le Bitmap d'un TImage donc pas de var.
sinon, pour les pointeurs c'est une question inerrante a scanline.
en effet les anciens bitmap etait limité a 2048 pixels de long.
soit :
array[0..2047] of ...
mais maintenant, le format ayant evolué, la taille n'est plus limitée et donc on peu definir une taille min/max a ce buffer.
quand on recupere pPL := BMP.ScanLine[Y], pPL contient tout les pixels de la ligne Y.
ensuite on appel pPL[X] pour travailler sur le pixel X de la ligne Y.
sincerement je crois avoir tenter une fois d'utiliser un tableau dynamique pour scanline, mais il me semble que ça ne fonctionne pas.
j'explique aussi pourquoi j'utilise des structure Record.
comme tu le sais un bitmap peut avoir un format de pixel different :
pf8bit (byte)
pf16bit (word)
pf24bit (...)
pf32bit (integer)
le probleme, c'est que par exemple il n'existe pas de type scalaire 24bit (3x1byte). et donc il nous faut une structure record ou un tableau de 3 bytes :
TPixel24 = record B,G,R : byte end;
TPixel24 = array[0..2] of byte;
pour le pf32bit, un structure record ou un integer est identique, sauf que la structure record offre quelques avantage, comme par exemple d'eviter de faire des SHL et SHR pour travailler sur lun des octet de couleur RGB.
Croc (click me)