Umrechnung von Punkt in Pixel

Hallo in die Runde.
Ich habe festgestellt, dass in Listboxen Unterlngen abgeschnitten werden und fand dafr keinen Grund.
Jetzt habe ich herausgefunden, dass das nur in den Zellen passiert, wo ich die Ausgabe im CellTextPaint-Event selbst ausgebe. Offensichtlich passen meine bisherigen (festen) Werte fr die Ausgabeposition nicht mehr. Schnell ist auch klar, dass ich Pixel anstelle von Punkt nutze.

Da die Textunit auf Punkt steht und ich die Zeichenposition in Pixel angegeben wird, bentige ich eine Umrechnung von Punkt in Pixel.

Wie habt ihr das gelst?

Gru, Stefan.

Ich wei gar nicht, ob dir mit einer einfachen Umrechnung geholfen ist. Ein Font mit 9 pkt kann eine ganz andere Zeichenhhe haben als eine andere Schrift mit ebenfalls 9 pkt. Am meisten Informationen zu gutem Schrifthandling drfte Michel geben knnen.

Ich selbst habe keine Programme, in denen ich verschiedene Fonts zur Wahl anbiete. Wenn ich etwas anderes als die Systemschrift verwende, lege ich die Offsets meistens einfach schnell per Trial & Error fest :wink:
Ordentlicher drfte es sein, ein paar Testbuchstaben zu vermaen, indem man Texthhe und -breite berechnet und prft, ob diese berhaupt in den vorgesehenen Platz passen. Andere tasten sich auch heran, indem sie Zeichen in ein Graphics-Objekt ausgeben und diese nach den Positionen der Ober- und Unterlngen und der Schriftlinie abtasten. Wobei es dafr bestimmt auch OS-Funktionen gibt; ich wei aber nicht, ob die erschlossen sind. Mal Christian fragen?

Wobei: Pixel wiederum wren nicht HiDPI-konform. Da sinds dann doch wieder Points, wobei das eben nicht mit den Font-Pkt gleichzusetzen ist.

Warum so kompliziert? Der Text kann ja in Points sein. Aber die Listbox hat doch eine Höhe in Pixeln. Daraus berechne ich dann den Offset für den Text mit einer ganz einfachen Hilftsfunktion:

[code] dim thePicture as new Picture(500, 100, 32)
thePicture.Graphics.TextFont = hasFont
thePicture.Graphics.TextSize = hasFontsize

Return thePicture.Graphics.StringHeight(“fromg”, thePicture.Width)[/code]

Danke Beatrix,
ich habe immer mit graphics.textsize gearbeitet. Deinen Vorschlag werde ich mal testen.

Gru, Stefan.