Seite 1 von 1

Fontgröße bei drawText

Verfasst: 9. November 2011 09:07
von entwickler
Hallo,
das ist mein erster Beitrag auf diesem Forum. Die Nutzung der Suchfunktion hat mich leider nicht weitergebracht.

Seit einigen Monaten beschäftige ich mich mit Entwicklung einer Applikation für ein eingebettetes Linux System. Für grafische Ausgaben nutze ich Qt Embedded in der Version 4.5.3 .

Bisher verlief die Nutzung von Qt nahezu reibungslos. Und alle Probleme konnten durch Lesen von Qt Reference Documentation und Internetrecherchen gelöst werden. Bis jetzt.

Nun bin ich auf ein Problem gestoßen, welches ich nicht lösen kann.

Eigentlich will ich nur einige Textstrings an bestimmter Position, mit bestimmter Größe und in bestimmter Schrift ausgeben. Das Auswählen der gewünschten Schriftart klappt einwandfrei. Aber Position und Größe der Schrift stimmen nicht mit dem überein, was ich eigentlich erwartet hätte.

Als Ergebnis erhalte ich den korrekten Text auf dem Bildschirm. Die Schriftzeichen sind aber deutlich kleiner als eingestellt.

Hier Mein Beispiel:
Ich will Texte in der Schrift Courier New in einer Größe von 20 ausgeben.
In einem Text- oder Bildbearbeitungsprogramm erhalte ich bei diesen Einstellungen Schriftzeichen, die in der Vertikale ca. 30 Pixel belegen.

Bild
(Stark vergrößerte Darstellung in einem Bildbearbeitungsprogramm mit Pixelraster)

Wenn ich nun die Texte von Qt auf meinem Gerät in einem Rechteck mit einer Höhe von 30 Pixeln ausgebe, belegen die Schriftzeichen in der Höhe nur ca. 2/3 des Rechtecks.

Bild
(Fotoaufnahme der Ausgabe auf dem Bildschirm)

Für die Ausgabe des Strings nutze ich im paintEvent:
Qfont::setPixelSize oder Qfont::setPointSize um die Größe der Schrift festzulegen.
und
QPainter::drawText ( int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0 ) für die Textausgabe.

Code: Alles auswählen

/* Weißes Rechteck: Größe und Position, wie Textbereich unten */
brush.setColor(QColor(0xFFFFFFFF));
painter.setBrush(brush);
painter.drawRect(100, 100, 32, 30);
painter.setBrush(Qt::NoBrush);

/* Text ausgeben */
pen.setColor(0xFF000000);
painter.setPen(pen);
font.setFamily((QFontDatabase::applicationFontFamilies(0).at(0).toLocal8Bit().constData()));
font.setPointSize(20);
//font.setPixelSize(20); //Alternative
painter.setFont(font);
painter.drawText (100, 100, 32, 30, Qt::AlignLeft | Qt::AlignVCenter, txtstring, 0);
Kann das Problem irgendwie gelöst werden?

Für Eure hilfreichen Beiträge bin ich dankbar.

Re: Fontgröße bei drawText

Verfasst: 9. November 2011 09:43
von franzf
Kann das einfach nur an der Auflösung liegen?
http://de.wikipedia.org/wiki/Punktdichte
Bild/Textbearbeitung sind auf den Druck ausgelegte Anwendungen, und print und monitor haben einfach unterschiedliche Punktdichte.
Ein Monitor hat ca. 96dpi (QX11Info::appDpiX()), prints hingegen teils deutlich mehr.

Ich würd mich davon jetzt nicht verrückt machen lassen. Einfach Text ausgeben und wenns passt und gut ausschaut ist doch alles OK, oder?

Re: Fontgröße bei drawText

Verfasst: 9. November 2011 12:00
von entwickler
franzf hat geschrieben:Kann das einfach nur an der Auflösung liegen?
http://de.wikipedia.org/wiki/Punktdichte
Bild/Textbearbeitung sind auf den Druck ausgelegte Anwendungen, und print und monitor haben einfach unterschiedliche Punktdichte.
Ein Monitor hat ca. 96dpi (QX11Info::appDpiX()), prints hingegen teils deutlich mehr.

Ich würd mich davon jetzt nicht verrückt machen lassen. Einfach Text ausgeben und wenns passt und gut ausschaut ist doch alles OK, oder?
Vielen Dank für die schnelle Antwort.

Soweit ich weiß, läuft das Gerät ohne X11. Wo könnte in diesem Fall die DPI-Einstellungen in Qt ausgelesen und anpasst werden?
Die physikalische DPI-Auflösung des Displays will ich noch herauszufinden. Es könnte wirklich die Ursache für abweichende Darstellung sein.

Die Schriften sollten möglichst exakt abgebildet werden. Es handelt sich um eine Applikation, die anhand einer Konfigurationsdatei verschiedene Informationen ausgibt. Diese Konfigurationsdatei wird mit einer Art WYSIWYG PC-Software erstellt, die nicht mit Qt geschrieben wurde. Ich habe keine Möglichkeit diese WYSIWYG-Software anzupassen. Mein Ziel ist aber die Applikation dazu zu bringen die WYSIWYG-Konfiguration so exakt, wie möglich darzustellen.

Re: Fontgröße bei drawText

Verfasst: 9. November 2011 12:45
von entwickler
Habe im Startskript einige interessante Zeilen gefunden:

Code: Alles auswählen

export QWS_DISPLAY=LinuxFb:mmWidth=95.0 :mmHeight=54.0:/dev/fb0
export QWS_SIZE=480x272
Die angegebenen Werte stimmen.