Delphi - Színek, színpaletták használata

GDI 4. rész

forráskód letöltése

Ebben a részben egy kicsit a színekkel, színpalettával foglalkozunk, méghozzá úgy, hogy két komponenst is készítünk, amit felhasználhatunk az általunk készített rajzolóprogramban. A mellékelt példaprogram megnyitása előtt a ColorPalette.pas-ban lévő komponenseket telepítenie kell a Delphi alá.

A ColorPalette.pas-ban található két komponens a következő:
  • TColorPalette: egy vízszintesen görgethető színpaletta. A színpaletta maximum 256 színt tartalmazhat. Ebből külön megadható, hogy mennyi látható vízszintesen vagy függőlegesen. A ColorBox property-ben megadható egy TColorBox komponens, amiben a kiválasztott színek megjelennek.
  • TColorBox: a TColorPalette komponensben kiválasztott színeket jeleníti meg, de önállóan is használható. A bal egérgombbal az előtér (középső kis téglalap), a jobbal pedig a háttérszín választható ki. Ez a módszer használható a TColorPalette komponensnél is.

A TColorPalette komponens alapvetően a GetPaletteEntries GDI függvényre épül. Ennél a függvénynél a következő paramétereket kell megadnunk:
Palette: a színpaletta azonosítója (HPALETTE). Ha például egy TGraphic típusú objektummal dolgozunk, akkor ennek Palette property-jéből kapjuk meg ezt az értéket. A komponensben szintén a Palette property-t kell használnunk az azonosító megadására. Erről lejjebb még lesz szó.
StartIndex: a színpaletta első színének sorszáma.
NumEntries: a lekérdezendő színek száma.
PaletteEntries: egy tömb, aminek elemei TPaletteEntry típusúak. Ebben a tömbben kapjuk meg a színeket. A TPaletteEntry rekord peRed, peGreen és peBlue mezőiből olvashatók ki a piros, zöld és kék színösszetevők értékei.

A színpaletta azonosítóját a Palette property-ben kell megadni. A komponens konstruktorában a rendszer alapértelmezett színpalettáját adjuk alapértéknek:
  Palette:=GetStockObject(DEFAULT_PALETTE);
Egy kép színpalettájának megadása hasonló módon történik:
  ColorPalette1.Palette:=Image1.Picture.Graphic.Palette;


GDI cikksorozat