HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Képek pixelenkénti manipulása


Canvas objektum 7. rész

Példaprogram letöltése

10075 bájt


Előfordulhat olyan eset, amikor egy képet pixelenként kell manipulálni. A TCanvas osztály természetesen erre is ad lehetőséget. A mellékelt példában ezzel a módszerrel készítünk egy olyan színpalettát, ami két tetszőlegesen megadható szín különböző arányú keverésével jön létre.

A Canvas pixeleit a Pixels property-n keresztül tudjuk manipulálni. Ezt ugyanúgy kell használni, mint egy kétdimenziós tömböt, aminek elemei TColor típusúak. Ezt a módszert csak akkor alkalmazzuk, ha feltétlenül szükséges, mivel a pixelek ilyen formán történő elérése nagyon lassú.
Az alábbi példa a Canvas (40,30) koordinátán lévő pixelének színét pirosra állítja.
  Canvas.Pixels[40, 30] := clRed;

A mellékelt példában két szín különböző arányú összekeverését oldottuk meg. A színpaletta mérete 128x128 pixel méretű. A színeket TColor típusban tároljuk. Azt mindenképpen tudni kell, hogy az egyes színek három színösszetevőből tevődnek össze. A három színösszetevő a piros, zöld és kék. Mindegyik színösszetevőnek 0-255 értéke lehet. Ha mindhárom színösszetevő értéke 0, akkor a szín fekete, míg maximális érték mellett fehér.
A mellékelt példában a két színt színösszetevőkre bontjuk, és kiszámítjuk a színösszetevők különböző arányú értékeit, majd az eredményből újból összeállítjuk a színt. Ezek látszanak a függőleges, és a vízszintes színsávokban. Ezután a két szín színösszetevőit összeadjuk, és így előáll a színpaletta aktuális pozíciójában lévő pixel színe.
Egy színt színösszetevőkre bontani a GetRValue, GetGValue és GetBValue függvényekkel tudunk, újból színné összeállítani pedig az RGB függvénnyel. Az alábbi példa a Form1 háttérszínét 50%-kal elsötétíti:
var
  r, g, b: integer;
  col: TColor;
...
  col := ColorToRGB(Form1.Color);
  r := GetRValue(col) div 2;
..g := GetGValue(col) div 2;
  b := GetBValue(col) div 2;
  Form1.Color := RGB(r, g, b);
A példában felfedezhető egy új függvény, a ColorToRGB. A TColor típusban tárolt szín nem feltétlenül RGB formátumú. Például ha a clBtnFace konstanst használjuk, akkor annak értéke $80000000. A függvény az ilyen színekből RGB formátumú színt állít elő.



Cikksorozat

#IDKategóriaCikk címeSorozat
1166DelphiOsztály hierarchia lekérdezése1. rész
1180DelphiOsztály hierarchia lekérdezése2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 529. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |