Seite 1 von 1

Beliebig kleine Schrift

Verfasst: 24. März 2010 12:58
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?

Verfasst: 25. März 2010 16:41
von holgrich
Versteh niemand was ich meine oder weiß einfach keiner eine Lösung?

Verfasst: 25. März 2010 16:52
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...

Verfasst: 25. März 2010 21:06
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 :<

Verfasst: 26. März 2010 11:17
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.