![]() |
Texthöhe berechnen (mit Zeilenumbruch)
Hallo,
ich zeichne in ein Recteck mit DrawText einen Text, den ich auch umbrechen lasse. Jetzt möchte ich schön unter dem Text einen weiteren ausgeben. Wenn ich aber die Funktion mit "dt_calcrect or dt_wordbreak" aufrufe, dann verändert sich das komplette Rechteck, was aber in meinem Fall nicht sein darf. Dann habe ich die Funktion GetTextMetrics entdeckt, diese scheint aber keinen Textumbruch zu unterstützen. Was kann ich tun? Danke |
Re: Texthöhe berechnen (mit Zeilenumbruch)
Hallo
dt_calcrect ändert doch aber nur die höhe, nicht das komplette Rechteck. Die Breite, die das Rechteck hatte, bleibt. Mfg Frank |
Re: Texthöhe berechnen (mit Zeilenumbruch)
Nein, es ändert nicht nur die Höhe sondern manipuliert das gesamte Rechteck. Das ist ja mein Problem.
|
Re: Texthöhe berechnen (mit Zeilenumbruch)
ist mir ehrlich gesagt so noch nicht aufgefallen, hast du etwas beispielcode?
|
Re: Texthöhe berechnen (mit Zeilenumbruch)
Einfach mal so aus der Unit gezogen (etwas unübersichtlich vielleicht, da ich doch am Experminetieren bin)
Delphi-Quellcode:
Kannst ja noch ein kleines ShowMessage rundrum legen und die Veränderung ansehen. Das Problem bei mir ist, dass ich zwei Textausgaben nebeneinander darstellen möchte, aber dies wegen der Veränderung des Rechtecks optisch nicht klappt
t:=jpg.Height+10+(i*Font.Height)+(i*25);
l:=FLeftMargin; r:=ceil((Width/5)*3); b:=t+DrawText(Canvas.handle, PChar(Tasks.Strings[i]), Length(PChar(Tasks.Strings[i])), TaskRect, dt_calcrect or dt_wordbreak); t:=jpg.Height+10+(i*Font.Height)+(i*25); l:=FLeftMargin; r:=ceil((Width/5)*3); DrawText(Canvas.handle, PChar(Tasks.Strings[i]), Length(PChar(Tasks.Strings[i])), TaskRect, dt_wordbreak); |
Re: Texthöhe berechnen (mit Zeilenumbruch)
ok, da seh ich jetzt nicht durch, die vielen Variablen verwirren mich für diese Uhrzeit :).
und du verwirrst mich, in deinem ersten Posting möchtest du Text untereinader, im letzten nebeneinander ;-). Für untereinander würde ich es so probieren:
Delphi-Quellcode:
Var r:Trect;
s1,s2:string; hoehe:integer; begin //untereinander r:=rect(20,30,150,100); s1:='Einfach mal so aus der Unit gezogen (etwas unübersichtlich vielleicht, da ich doch am Experminetieren bin)'; s2:='Kannst ja noch ein kleines ShowMessage rundrum legen und die Veränderung ansehen. Das Problem bei mir ist, dass ich zwei Textausgaben nebeneinander darstellen möchte '; Hoehe:=DrawText(Canvas.handle, PChar(s1), Length(s1), R, dt_calcrect or dt_wordbreak); r.Bottom:=r.Top+hoehe; DrawText(Canvas.handle, PChar(s1), Length(s1), R, dt_wordbreak); //rechteck verschieben und anderen Text daruntersetzen offsetrect(r,0,hoehe); Hoehe:=DrawText(Canvas.handle, PChar(s2), Length(s2), R, dt_calcrect or dt_wordbreak); r.Bottom:=r.Top+hoehe; DrawText(Canvas.handle, PChar(s2), Length(s2), R, dt_wordbreak); |
Re: Texthöhe berechnen (mit Zeilenumbruch)
Joa... muss grad voll lachen...
Also, mein Ausgangsgedanke: Ich wollte eine Art Liste mit 2 Spalten. Damit diese schön angeordnet sind, habe ich zwei Rechtecke - eins für jede Spalte. Die Left-Position des 2. Rechtecks wird von der Rigth-Position des ersten beeinflusst. Doch wenn die Schrift einen Zeilenumbruch drin hat, verschieben sich natürlich die Einträge, sodass die Reihen nicht mehr korrekt nebeneinander stehen. So schaut's aus... Den Code werde ich mal testen. |
Re: Texthöhe berechnen (mit Zeilenumbruch)
ok :).
aber ich habs auch grad nochmal durchgesteppt. Die breite ändert sich auch, ist mir noch nie aufgefallen :oops: aber du kannst doch dir die Breite vor Darwtext merken und dann danach wieder setzen? |
Re: Texthöhe berechnen (mit Zeilenumbruch)
Dafür hatte ich ja die vielen Variabeln (l (Left) t (Top) r (Right) b (Bottom)), aber da hatte ich wohl einen anderen Fehler drin. Ich hoffe halt nur, dass es eine andere, elegantere Lösung gibt...
Danke |
Re: Texthöhe berechnen (mit Zeilenumbruch)
Hilfe lesen hilft:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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