Qt: Font wird nicht pixelgenau gezeichnet

Orbit

Erfahrenes Mitglied
Hallo,

ich benutze Qt und eine Fontdatei mit symbolen und will diese per QPainter zeichnen. das muss pixelgenau sein, weil ich Elemente mit einfachen Linien etc. dazuzeichnen möchte.
Nun ensteht aber teilweise eine Ungenauigkeit von 1-2px beim Zeichnen - jedoch nicht immer. Woran kann das liegen?
Die elemente die ich verbinden möchte liegen zB in der Fontdatei bei x=0, y=0, d.h. an der Fontgröße selber liegt es nicht, Antialising hab ich auch schon ausgetörnt, ging trotzdem nicht.

Danke für die Mithilfe!
Orbit
 
Zuletzt bearbeitet:
So, habs gelöst. Es war ein blöder Rundungsfehler (der eigentlich nicht hätte sein dürfen).
Um den text genau an meine gewünschte Breite und Höhe anzupassen (damit QPainter sie eben nicht aneinander anpasst) hatte ich scale() benutzt und die x-Koordinate dann mit x/scale "unscaled". Da gab es (obgleich alles schön in double) Rundungsfehler. Jetzt translate ich einfach um x bevor ich skaliere und es wörkt.
Hier der Quelltext:
Code:
void OwnPainter::drawTextInRect(QString text, int x, int y, int width,
			int height)
{
	// set the fonts height (in pixels)
	QFont font = this->font();
	font.setPixelSize(height);
	QPainter::setFont(font);

	// get the font metrics and the needed width
	QFontMetrics metrics(font);
	int neededWidth = metrics.width(text);

	// calculate the scaleFactor
	double sX = double(width)/double(neededWidth);

	// translate so the x value is right
	translate(x, 0);

	// scale the width
	scale(sX, 1);

	// draw the text
	drawText(0, y+height, text);

	// unscale
	scale(1/sX, 1);
	translate(-x, 0);
}

Mfg Orbit
 
Zurück