![]() |
Text genau in der mitte vom Bild ausgeben.
Servus,
habe ein Bild. Möchte genau in der mitte des Bildes den Text "Test" ausgeben. Wie kann ich die genau länge berechnen, so das es auf dem Canvas auch past.
Delphi-Quellcode:
das haut ja nicht hin, brauche ja die Pixel.
Canvas.TextOut(X + ((W div 2) - (length('Test'))),
Y + ((H div 2) - (FontH)), 'Test'); Da gibt es doch bestimmt ne funktion für, oder? gruß |
Re: Text genau in der mitte vom Bild ausgeben.
Ist das einzeiliger Text? Dann ginge das mit
![]() |
Re: Text genau in der mitte vom Bild ausgeben.
versuch es mal anstelle von length('Test') mit canvas.Textwidth('Test') und denk dran, dass du die Textbreite ebenfalls noch durch 2 teilen musst.
|
Re: Text genau in der mitte vom Bild ausgeben.
Delphi-Quellcode:
procedure DrawCenterText(anyCanvas: TCanvas; sText: string);
var r: TRect; tx, ty: Integer; begin r := anyCanvas.ClipRect; tx := ((r.Right - r.Left) div 2) - (anyCanvas.TextWidth(sText) div 2); ty := ((r.Bottom - r.Top) div 2) - (anyCanvas.TextHeight(sText) div 2); anyCanvas.TextOut(tx, ty, sText); end; // Beispielaufruf: procedure TForm1.FormPaint(Sender: TObject); begin DrawCenterText(Canvas, 'Hello from www.delphipraxis.net'); end; // oder: procedure TForm1.PaintBox1Paint(Sender: TObject); begin DrwaCenterText(PaintBox1.Canvas, 'Hello from www.delphipraxis.net'); end; |
Re: Text genau in der mitte vom Bild ausgeben.
super thx.
|
Re: Text genau in der mitte vom Bild ausgeben.
Und um das Ganze nochmals in Worten auszudrücken ... vielleicht holft es bei der nächsten Problemfindung.
Du wills etwas zentriert haben also mußt du die Mittelpunkt der beiden "Objekte" übereinanderlegen - Mittelpunkt des Bildes berechnen (Breite/Länge durch 2) - Mittelpunkt des Textes berechnen (ebenfals Breite/Länge durch 2) - Length(Text) gibt die Anzahl der Zeichen und nicht dreren Breite zurück Lösung: ![]() Du brauchst ur Berechnung aber die selbe Einheit, wie im Bild, also in diesem Fall Pixel - und nun nur noch alles zusammenfügen XPosition = (BildLänge / 2) - (TextBreite / 2) YPosition = (BildHöhe / 2) - (TextHöhe / 2) |
Re: Text genau in der mitte vom Bild ausgeben.
Oder auch:
XPosition = (BildLänge - TextBreite) / 2 YPosition = (BildHöhe - TextHöhe) / 2 |
Re: Text genau in der mitte vom Bild ausgeben.
Zitat:
Zitat:
|
Re: Text genau in der mitte vom Bild ausgeben.
Zitat:
Zitat:
Zitat:
Obwohl turboPASCAL es ja quasi schon bei sich verbaut hatte. |
Re: Text genau in der mitte vom Bild ausgeben.
Zitat:
ist ja auch egal, TextWidth und TextHeight habe ich gesucht und hier gefunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz