Beliebig kleine Schrift

Alles rund um die Programmierung mit Qt
Antworten
holgrich
Beiträge: 3
Registriert: 24. März 2010 12:08

Beliebig kleine Schrift

Beitrag von holgrich »

Hallo

ich glaube, ich habe ein Problem, zu dem ich im Forum nichts gefunden habe:
Ich programmiere gerade eine QT-Applikation zur dynamischen Anzeige einer GPS-Fahrspur. Zum einfachen Darstellen der Spuren habe ich den Plot-Bereich auf x:[10,14] und y:[50,54] verkleinert.

Code: Alles auswählen

void Klasse::setPaintRange( QPainter *painter )
{
	painter->scale( width() / (plotBox[2] - plotBox[0]), height() / (plotBox[3] - plotBox[1]) );
	painter->translate( QPointF( 0 - plotBox[0], 0 - plotBox[1] ) );
}
plotBox ist dabei der gewünschte Bereich, in dem sich die Fahrspur befindet.

Wenn man sich das vorstellt, wird klar, dass der dargestellte Bereich sehr klein ist (statt 400x400 nur 4x4). Daher wird Schrift auch so groß dargestellt, dass ein Buchstabe das ganze Bild verdeckt.

Kann man das ändern? Ich habe es versucht mit

Code: Alles auswählen

QPainter painter( this );
QFont *font = new QFont( "Courier", 10, QFont::StyleNormal );
font->setPointSizeF( 0.0001 );
painter.setFont( *font );
Was allerdings nichts ändert. Gibt es einen unteren Grenzwert für den Parameter von setPointSizeF? Kennt jemand einen anderen Weg?
holgrich
Beiträge: 3
Registriert: 24. März 2010 12:08

Beitrag von holgrich »

Versteh niemand was ich meine oder weiß einfach keiner eine Lösung?
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

Wie stellst Du Dir das vor mit der PointSize?
Wie soll das Betriebssystem einen Punkt mit einem Tausendstel Pixel Größe darstellen?

Was Du versuchen könntest: Ein jpg erstellen und das skaliert darstellen.
Ob Du das jpg auf Platte legst oder im Speicher hältst, ist Dir überlassen...
Linux, das längste Text-Adventure aller Zeiten
holgrich
Beiträge: 3
Registriert: 24. März 2010 12:08

Beitrag von holgrich »

Ja, ist vielleicht ein ungünstiger Ansatz mit der PointSize. Eigentlich würde ich das ja als sehr kleine Schriftgröße angeben, aber die Konstruktoren für QFont nehmen nur Integer als Schriftgrößen an. Allerdings hat QFont die Methoden PointSize und PixelSize, ich dachte mit denen käm ich weiter...

Mit dem jpg könnte es schwierig werden, denn ich will wahlweise 10 von ingsgesamt 2000 Zahlen darstellen lassen.

Ja, wenn notfalls keiner eine Idee hat, muss ich statt den Ausschnitt auf [10,14]x[50,54] runter zu skalieren, die Punkte auf [0,400]x[0,400] hoch skalieren. Erhöht aber den Rechenaufwand um einiges :<
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

Beitrag von mathies »

Hallo,

mal ganz unabhängig von der Größe des Textes, handelt

void QPainter::drawText ( const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0 )

das nicht alles automatisch? Du gibst nur das Rechteck an in dem der Text eingepasst werden soll.
Antworten