Matti Hat
hier eine
Unit veröffentlicht, mit der es möglich ist, Text mit einem Schatten versehen auf ein Canvas zu zeichnen.
Diese
Unit stellt die Funktion DrawShadowText aus der ComCtl32.dll zur Verfügung. Bei Windowsversionen unter XP oder ohne Windows XP Manifest wird eine Ersatzfunktion zum Darstellen des Schattens verwendet.
Wie es ohne die
VCL geht (
nonVCL), zeigt Matti
hier.
Der Übersichtlichkeit halber befinden sich die Units im Anhang und auch der Demo-Screenshot.
Demo 1 wird von folgendem Code erzeugt. Hier ist der Schatten etwas verpixelt, da kein XP-Manifest eingebunden ist.
Delphi-Quellcode:
Canvas.Font.Name := 'Verdana';
Canvas.Font.Size := 10;
Canvas.Font.Style := [fsbold];
DrawShadowText(Canvas, 200, 200, 'Hallo, dies ist eine DrawShadowText-Demo!',
clBlue, clGray, 1, 1)
Mit XP-Manifest sieht das ganze weicher aus (Demo 2):
Delphi-Quellcode:
Canvas.Font.Name := 'Verdana';
Canvas.Font.Size := 10;
Canvas.Font.Style := [fsbold];
DrawShadowText(Canvas, 100, 200, 'Hallo, dies ist eine DrawShadowText-Demo!',
clBlue, clGray, 4, 4);
Mit DrawShadowTextR() lassen sich noch tollere Effekte erzielen. Spielt einfach damit herum.
Demo 3 wird so erzeugt:
Delphi-Quellcode:
Canvas.Font.Name := 'Verdana';
Canvas.Font.Size := 14;
DrawShadowTextR(Canvas, Rect(200, 200, 450, 450), 400, 200,
'Hierbei handelt es sich um einen längeren Text, der ' +
'automatisch umgebrochen werden sollte, sofern er nicht ' +
'in das TRect passt.',
clBlue, clGray, 3, 3, DT_CENTER or DT_WORDBREAK);