Delphi: CanvasTextOut Ausrichtung: Align Left, Right and Center
Tipp von Delphianer | Letztes Update am 31.01.2023 | Erstellt am 13.02.2013
CanvasTextOut ist eine Delphi-Funktion, mit der wir einen Text auf ein Bitmap zeichen können. Unglücklicherweise unterstützt diese Funktion nicht unmittelbar eine Ausrichtung des Textes. Aus diesem Grund zeige ich euch in diesem Tip einen Workaround, wie ihr mit CanvasTextOut einen Text links, rechts oder zentriert ausrichten könnt.
Der Trick dabei: Wir bestimmen die Breite des Textes (Variable textbreite) und schauen, wie viel Platz für den Text insgesamt gegeben ist. Abhängig vom gewählten Alignment (im Beispiel durch die RadioButtons rb_alleft, rb_alright und rb_alcenter) berechnen wir die Variable align, die wir bei der Ausgabe des Textes zum Außenabstand hinzuzählen.
Hier ist der komplette Beispielcode:
procedure ...; var zeilen: TStringList; i: integer; align, breite, hoehe, randlinks, randrechts, randoben, zeilenabstand, position, textbreite: integer; bmp: TBitmap; begin // Zeilen, die geschrieben werden zeilen:=TStringList.Create; zeilen.add('Das ist ein Text.'); zeilen.add('Das ist eine weitere Zeile.'); // Ränder und Abstände breite := 300; hoehe := 300; randlinks := 10; randrechts := 10; randoben := 30; zeilenabstand := 40; // Bitmap erstellen bmp:=TBitmap.Create; bmp.Width := breite; bmp.height := hoehe; // Text schreiben for i := 0 to length(zeilen) - 1 do begin // Ausrichtung textbreite:=CanvasTextWidth(bmp.Canvas, zeilen[i]); if rb_alleft.checked then align:=0; if rb_alright.checked then align:=breite-randlinks-randrechts-textbreite; if rb_alcenter.checked then align:=round((breite-randlinks-randrechts-textbreite)/2); // Zeilen schreiben position:=randoben+(i*zeilenabstand); CanvasTextOut(bmp.Canvas, randlinks+align, position, zeilen[i]); end; // Etwas mit dem Bitmap machen Image1.Picture.Bitmap:=bmp; // Freigeben zeilen.Free; bmp.Free; end;
Zuerst fügen wir einige Zeilen zu einer Stringlist hinzu. Diese Zeilen sollen später ausgegeben werden. Danach legen wir alle Abstände und die Größe des Bitmaps fest (die Werte kann man frei verändern). Nachdem wir das Bitmap erzeugt haben, gehen wir alle Zeilen einzeln durch und bestimmen die Textbreite jeder Zeile. Anschließend legen wir den align-Wert jeder Zeile fest und schreiben jede Zeile auf die Bitmap.
Über den Autor
Der Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen
Ähnliche Themen
Vater Unser in 20 anderen Sprachen
Info | 2 Kommentare
Mehrere Texte gleichzeitig ersetzen
Tutorial | 0 Kommentare
HTML5 Canvas: Text auf einem Punkt horizontal und vertikal zentrieren
Tutorial | 0 Kommentare
Text nur in bestimmten Zeilen ersetzen
Tutorial | 0 Kommentare
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
PHP: Beliebige Zeichen am Anfang und Ende eines Strings entfernen
Tutorial | 0 Kommentare
HTML5 Canvas: Einsteiger Tutorial Teil 4 - Text auf Canvas schreiben
Tutorial | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.