
A mellékelt példaprogram megnyitása előtt a ThreeDText.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A különleges hatást úgy érjük el, hogy a szöveget kiíratjuk négyszer egymás után, egymáshoz képest kissé eltolva. Mivel a szöveget képként kezeljük, szükségünk lesz egy objektumra, melynek a Canvas-ára rajzolhatunk. Első lépésként hozzuk létre a komponensünkben a megfelelő property-ket, melyeken keresztül beállíthatjuk a megjelenítendő szöveg tulajdonságait.
private
{ Private declarations }
fFontName:TFontName;
fFontStyle:TFontStyles;
fTextColor:TColor;
fFontSize:integer;
fShadowColor1:TColor;
fShadowColor2:TColor;
fShadowColor3:TColor;
fUpCorner:integer;
fLeftCorner:Integer;
Ezután készítünk egy Paint nevű függvényt, mely paraméterként egy objektum rajzterületét várja, valamint a megjelenítendő szöveget.
procedure TThreeDText.Paint(Canvas:TCanvas; Text:String);
begin
A rajzterület tulajdonságait beállítjuk a komponens published property-jeiben megadott értékeknek megfelelően.
Canvas.Brush.Style := bsClear;
Canvas.Font.Style := fFontStyle;
Canvas.Font.Name := fFontName;
Canvas.Font.Size := fFontSize;
Canvas.Font.Color := fShadowColor1;
Az fUpCorner és fLeftCorner változókban a kiírandó szövegnek rajzterület bal felső sarkától mért távolságát adjuk meg. Ezt fokozatosan csökkentjük 1-el balra és 1-el felfelé, miközben újra kiíratjuk a szöveget más-más színnel. Így az elsőnek kirajzolt szöveg marad legalul, míg az utoljára kirajzolt legfelül.
Canvas.TextOut(fUpCorner, fLeftCorner, Text);
Canvas.Font.Color := fShadowColor2;
Canvas.TextOut(fUpCorner - 1, fLeftCorner - 1, Text);
Canvas.Font.Color := fShadowColor3;
Canvas.TextOut(fUpCorner - 2, fLeftCorner - 2, Text);
Canvas.Font.Color := fTextColor;
Canvas.TextOut(fUpCorner - 3, fLeftCorner - 3, Text);
end;
A mellékelt példaprogramban egy Image-re rajzolunk. A Paint függvényt a következőképpen hívjuk meg.
ThreeDText1.Paint(Image1.Canvas, 'Animare Software');
Az Image Transparent tulajdonságát igazra állítottuk, így az nem látszik futási időben.