Hallo miteinander,
ich habe eine Anwendung die unter Windows läuft und nun auf Linux (32 und 64bit) portiert werden soll.
Auf einem Form befindet sich ein TPanel, dort werden Labels mit unterschiedlichen Schriftgrößen positioniert.
In einer gedachten Zeile (auf einer Linie) sollen Texte unterschiedlicher Größe auf der gleichen Baseline positioniert werden.
Das Problem ist, das ein Text nicht auf der Baseline positioniert wird sondern mit dem oberen Rand, und ich auch mehrere Labels auf einer Zeile positioniere weshalb ich die tatsächliche Länge des Textes auf dem Panel benötige.
Bislang nutze ich hierzu Windows Funktionen aus der "Windows" Unit.
TOutlineTextMetric (hier spezuell tmAscent)
if GetOutlineTextMetrics(cnv.Canvas.Handle, SizeOf(Metric), @Metric) <> 0 then i := Metric.otmTextMetrics.tmAscent;
und
DrawText(lblGraphInfo.Canvas.Handle, PChar(mystr), Length(mystr), R, DT_CALCRECT);
Die Frage ist nun, wie mache ich das Ganze auf einem Linux System?
Gibt es evtl. etwas das diese Funktionen plattformübergreifend kapselt?
Ich hoffe ich bin mit meiner Frage hier richtig.
Grüße
Rob
TLabel - Positionierungsproblem unter Linux (Ubuntu)
Re: TLabel - Positionierungsproblem unter Linux (Ubuntu)
Es gibt
GetTextMetrics() in LCLIntf
http://lazarus-ccr.sourceforge.net/docs ... trics.html
http://lazarus-ccr.sourceforge.net/docs ... trica.html
Als HDC kann man das Canvas.Handle benutzen
Ich glaube es werden nicht alle Parameter auf allen Plattformen gesetzt, aber Ascent/Descent schon.
Statt Drawtext kannst du evtl. Canvas.TextRect() verwenden.
S.a. http://lazarus-ccr.sourceforge.net/docs ... style.html
GetTextMetrics() in LCLIntf
http://lazarus-ccr.sourceforge.net/docs ... trics.html
http://lazarus-ccr.sourceforge.net/docs ... trica.html
Als HDC kann man das Canvas.Handle benutzen
Ich glaube es werden nicht alle Parameter auf allen Plattformen gesetzt, aber Ascent/Descent schon.
Statt Drawtext kannst du evtl. Canvas.TextRect() verwenden.
S.a. http://lazarus-ccr.sourceforge.net/docs ... style.html
-
- Beiträge: 34
- Registriert: Fr 8. Jul 2011, 10:45
- OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
- CPU-Target: amd_64 und i386
- Kontaktdaten:
Re: TLabel - Positionierungsproblem unter Linux (Ubuntu)
Hallo theo,
danke!
Funktioniert, zumindest unter Windows. Linux muss ich noch testen.
Grüße
Rob
danke!
Funktioniert, zumindest unter Windows. Linux muss ich noch testen.
Grüße
Rob