|
|
TPen és TBrush osztályok használata
Canvas objektum 8. rész
|
|
Példaprogram letöltése
7827 bájt
|
A sorozat előző részeiben többször volt már szó a Pen és Brush property-kről. Most elérkezett a pillanat, hogy részletesen is megismerkedjünk ezekkel, valamint egy olyan eljárással, amellyel egy tetszőleges alakzatot festhetünk ki.
A TPen osztály elsősorban az alakzatok körvonalának tulajdonságait meghatározó property-ket tartalmaz. A Color property a vonal színét, a Width pedig a vastagságát határozza meg. A Style property a vonal stílusát adja meg. Értékei a következők lehetnek:
- psSolid: folyamatos vonal.
- psDash: szaggatott vonal.
- psDot: pontozott vonal.
- psDashDot: pontvonal.
- psDashDotDot: dupla pontvonal (két pont és egy rövid szakasz ismétlődik)
- psClear: nincs vonal. Ezt akkor használhatjuk, ha egy objektumnak (pl. Ellipse) nem szeretnénk körvonalat rajzolni.
- psInsideFrame: ugyanaz, mint a psSolid, de ha szükséges, akkor az 1 pixelnél vastagabb vonalak színét képes több színből összeállítani (kisebb színfelbontás esetén).
A Mode property a vonal rajzolásának módját adja meg, vagyis a pixelek közötti logikai műveletet. Ezek közül a legfontosabbak:
- pmBlack: a vonal (és az objektum) színe mindig fekete lesz.
- pmWhite: a vonal (és az objektum) színe mindig fehér lesz.
- pmNop: nem történik rajzolás.
- pmNot: invertálja a Canvas pixeleinek színét.
- pmCopy: a Color property értékét használja rajzoláshoz.
- pmNotCopy: invertálja a színt.
- pmMerge: A Canvas színének és a Color property szín kombinációja.
- pmXor: XOR művelet a Canvas háttérszíne, és a Color szín között.
- pmNotXor: az előző művelet eredményének inverze.
A TBrush osztály az objektumok kifestésének módját határozza meg. A Color property a kifestés színét, a Style pedig a mintázatát adja meg. A Style property értékei a következők lehetnek:
- bsSolid: nincs minta, folyamatos kitöltés a Color property-ben megadott színnel.
- bsClear: nincs kitöltés. Akkor használjuk, ha például a rajz objektumnak csak a körvonalát szeretnénk megjeleníteni, vagy a felirat hátterét átlátszóvá tenni.
- bsHorizontal: vízszintes csíkozás.
- bsVertical: függőleges csíkozás.
- bsFDiagonal: 135 fokos ferde csíkozás
- bsBDiagonal: 45 fokos ferde csíkozás.
- bsCross: vízszintes és függőleges csíkozás kombinációja.
- bsDiagCross: a bsFDiagonal és bsBDiagonal minták kombinációja.
A Bitmap property-ben megadható egy TBitmap objektum (kép), amit az alakzatok kitöltéséhez szeretnénk használni. Windows 9x és ME esetén csak egy maximum 8x8 pixeles képet használhatunk, Windows NT alatt a méret nincs korlátozva.
Egy tetszőleges alakzat kitöltéséhez a FloodFill eljárást használhatjuk. Az első két paraméter annak a pontnak a koordinátái, ahonnan a festést kezdjük. A harmadik paraméter egy szín, a negyedik paraméter pedig a kitöltés módja. A szín paraméter felhasználási módja ez utóbbi paramétertől függ. A kitöltés módja kétféle lehet:
- fsSurface: a kitöltés addig folytatódik, amíg a paraméterként megadott színű összefüggő területet talál.
- fsBorder: a paraméterként megadott szín annak az alakzatnak a körvonal színe, amit ki szeretnénk festeni. Ha az alakzatban lehetnek más színű pixelek is, azok is ki lesznek festve.
Az alábbi példák közül az első a Canvas (20,20) pozíciójában lévő pixeltől kezdve kifesti azt az alakzatot, aminek színe a megadott koordinátában lévő szín. A második példa egy olyan alakzatot fest ki, aminek a körvonala fekete színű. A megadott koordinátának az alakzaton belül kell lennie.
Canvas.FloodFill(20, 20, Canvas.Pixels[20, 20], fsSurface);
Canvas.FloodFill(40, 50, clBlack, fsBorder);
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 551. 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!
|