![]() |
Canvas.TextOut zentrieren
Hallo Leute,
ich würde gerne eine Ausgabe per TextOut auf dem Form zentrieren.
Delphi-Quellcode:
kommt bei der Schriftgröße schon einigermaßen hin, aber bei manchen texten hängt es.
x := Form1.Width div 2 - (Canvas.TextWidth(text) div 2);
Habt ihr da vl eine schöne Lösung oder irgendwelche Parameter die ich hier gebrauchen könnte? lg Nico |
AW: Canvas.TextOut zentrieren
sorry alter code
Delphi-Quellcode:
ist der aktuelle. Leider genau das gleiche problem.
x := round((Form1.Width - Canvas.TextWidth(text)) / 2);
canvas.TextOut(round((form1.ClientWidth - canvas.TextWidth('ZENTRIERT')) / 2),200,'ZENTRIERT'); von ![]() bringt leider nicht das gewünschte ergebnis EDIT: Das Problem scheint nur bei bold texten zu bestehen. da geht anscheinend die textwidth nicht richtig drauf? |
AW: Canvas.TextOut zentrieren
IMHO geht das mit
![]() |
AW: Canvas.TextOut zentrieren
Delphi-Quellcode:
var
r:TRect; s:String; begin r.Left := 0; r.Top := 0; r.Right := 300; r.Bottom := 100; s := 'Testtest'; Canvas.TextRect(r,s,[tfVerticalCenter,tfCenter,tfSingleLine]); end; |
AW: Canvas.TextOut zentrieren
Hi! Vielen Dank für eure Antworten,
beide Möglichkeiten scheinen aber Formatierungen wie bold/underline nicht zuzulassen oder? lg Nico |
AW: Canvas.TextOut zentrieren
Du musst vorher Canvas.Font.Style einstellen.
|
AW: Canvas.TextOut zentrieren
Ah schon müde :)
Danke für die Antwort, gerade selber gesehen dass das eh ganz normal über die Canvas lauft. Vielen Dank erstmal an alle! lg und einen schönen Abend Nico |
AW: Canvas.TextOut zentrieren
@Bummi, das ist leider mit Delphi 7 nicht möglich, da ist die Graphics wohl aufgewertet worden.
|
AW: Canvas.TextOut zentrieren
Zitat:
Man kann sich das aber für Delphi 7 leicht selber zusammenbauen:
Code:
In der Anwendung:
procedure TextOutEx(canvas: TCanvas; r: TRect; s: string; Font: TFont = nil);
var x, y: integer; StringWidthInPixel, StringHeightInPixel: integer; begin if Font <> nil then Canvas.Font := Font; StringWidthInPixel := Canvas.Textwidth(s); StringHeightInPixel := Canvas.Textheight(s); with r do begin x := (right - left - StringWidthInPixel) div 2; y := (bottom - top - StringHeightInPixel) div 2; end; Canvas.TextOut(x, y, s); end;
Code:
procedure TForm1.Button1Click(Sender: TObject);
var r: TRect; Font: TFont; begin // hier ist der Canvas der eines TImage r:=Image1.ClientRect; // falls benötigt: Font := TFont.Create; try with Font do begin color := clRed; Style := [fsbold, fsItalic]; size := 14; end; // oder Font als Parameter weglassen, falls nichts Spezielles gewünscht TextOutEx(Image1.canvas, r, 'Test-Test', Font); finally Font.Free; end; end; |
AW: Canvas.TextOut zentrieren
Liste der Anhänge anzeigen (Anzahl: 1)
Erstens: Vielen Dank für eure Bemühungen.
Hab es jetzt auch mit deiner Methode probiert asm aber leider kommt folgendes heraus(Anhang) Der Bold Text wird verschoben, da kommt anscheinend das Textwidth nicht zusammen, kann das sein? lg Nico |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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