Autor Beitrag
mwawra
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 15.07.05 22:39 
Ich spiele mich schon ewig mit dem Problem herum, daß die von TextWidth gelieferten Werte nicht der Realität entsprechen.

Konkret:
ausblenden Delphi-Quelltext
1:
2:
3:
Font.Name := 'Lucida Sans Unicode' ; 
Font.Height := 40 ; 
Font.Style := [] ;


TextWidth liefert Ergebnisse welche grob (80%) danebenliegen.

Änderungen der Fontgröße ergeben in einem großen Bereich (Height = 40, Height = 50) den gleichen Wert.

Was läuft da falsch ?

Kann es sein, daß bestimmte Fonts nicht feiner skalierbar sind ?

Wer weiß was darüber ?

Danke für Tipps

Manfred

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 15.07.05 22:50 
Hallo und :welcome: im DF!
Das kommt bei mir sehr genau hin :? Hast du evtl. versehentlich Font, statt Canvas.Font geändert?

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
mwawra Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 16.07.05 01:20 
Hallo,

danke fürs Willkommen und für die Antwort.

Ich wollte nicht den ganzen Sermon hinschreiben. Natürlich habe ich vom relevanten Canvas den Font entsprechend gesetzt, und von diesem Canvas Textwidth aufgerufen. Bei manchen Fontgrößen kommt der Wert auch sehr genau, bei anderen eben wie gesagt total daneben. Ich muß noch probieren, ob es bei einem anderen Font (z.B. Arial) besser klappt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Sa 16.07.05 10:20 
Ich habe es gestern mit deiner Einstellung (oben) probiert und das hat wunderbar funktioniert - die meintest du doch als Beispiel, oder?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
mwawra Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 16.07.05 17:36 
Hallo maxk,

ich glaube das Problem besteht darin, daß ich für die Ausgabe das Canvas umsetze:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  ziel    : TCanvas ;
  mypanel : TMyWinControl ; (* Abgeleitete Klasse aus TWinControl *)

  setmapmode(ziel.handle, mm_anisotropic) ;
  SetWindowExtEX(ziel.handle, druckbreite, druckhoehe, nil) ;
  SetViewportExtEX(ziel.handle, MyPanel.width, MyPanel.height, nil) ;


Wenn ich auf diesem transformierten Canvas TextWidth berechne kommen falsche Werte heraus.

Ich habe mir jetzt ein temporäres Bitmap erzeugt, auf dessen Canvas ich die TextWidth Berechnung mache. Diese Ergebnisse stimmen.

Danke fürs probieren und helfen

Manfred

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.