Delphi lume - pentru pixelformat

Bitmap.Scanline pentru PixelFormat

Cineva din Italia mi-a cerut să utilizeze un exemplu pf1bit în imagini (Bitmap), am trimis ca răspuns frecvent la preforme existente, gândit, și a adăugat aici pentru alte detalii si pf24bit pf8bit.







Nou în proprietatea scanline Delphi 3 permite accesul rapid la pixeli individuali, dar trebuie să specificați cu ce Bitmap.PixelFormat lucrați înainte de a putea accesa pixelii.

Posibile formate Pixel includ:
  1. pfDevice
  2. pf1bit
  3. pf4bit
  4. pf8bit
  5. pf15bit
  6. pf16bit
  7. pf24bit
  8. pf32bit
Imagini pf24bit

Pentru imaginile pf24bit, trebuie să determinați:

Notă: TRGBTriple este definită în modulul Windows.PAS.

Pentru a avea imaginea existentă de 24 de biți ca o imagine creată cu o rezoluție de 3 octeți pe pixel, procedați în felul următor:

Accesul la un astfel de format de imagine este ușor de obținut folosind TByteArray (definit în SysUtils.PAS):

(Cred că nu am încercat eu) că puteți să accesați imagini pf16bit folosind următoarele definiții în SysUtils.PAS:







Pentru a procesa o imagine pe 8 biți (pf8bit), utilizați un constructor similar cu cel care creează o histogramă a imaginii:

Accesul la imaginile pf8bit este destul de ușor, deoarece au început să utilizeze un octet per pixel. Dar puteți salva o mulțime de memorie dacă aveți nevoie de un singur bit pe pixel (cum ar fi, de exemplu, cu măști diferite) în cazul unei imagini pf1bit.

Ca și în cazul imaginilor pf8bit, utilizați TByteArray pentru a accesa liniile de scanare pf1bit. Dar pentru a accesa pixeli individuali, trebuie să lucrați cu biți de un octet separat. Deci, lățimea liniei intercalate este Bitmap.Width DIV 8 octeți.

Următorul cod arată cum puteți crea un șablon de imagine pe un bit: negru, alb, dungi, "g", "săgeată" și aleatoriu - opțiunea "inversat" este, de asemenea, disponibilă. (Sper că puteți stăpâni cu ușurință tehnologia.)

Creați un formular cu Image1: TImage Eu folosesc pentru o dimensiune a imaginii de 256x256 și Image1 proprietate Stretch: = TRUE, astfel încât pixelii individuali sunt ușor de a discerne. Butoane negre, dungi albe si au etichetele de proprietate, c valorile corespunzătoare 0, 255, și 85 (55 $ = 01010101 în calcul binar) care provoacă prin apăsarea tratare a evenimentului ButtonStripesClick.

Butoanele "g" și "săgeată" au propriile dispozitive de tratare a evenimentului care vă permit să imprimați corect imaginile de test pe imprimanta HP Laserjet.

"Random" stabilește întâmplător biții într-o imagine pe un bit.

"Invert" modifică zerouri la unul și invers.







Articole similare

Trimiteți-le prietenilor: