QPainter rotate

Alles rund um die Programmierung mit Qt
Antworten
sooofunky
Beiträge: 31
Registriert: 4. Mai 2011 11:48

QPainter rotate

Beitrag von sooofunky »

Hallo,

möchte in einem Halbkreis eine Skala und Werte einzeichnen. Der folgende Code unten wird in paintEvent ausgeführt. Das Problem: drawText und drawLine werden nicht untereinander gezeichnet. Stattdessen liegen sie um 90 Grad auseinander. Was habe ich hier übersehen?

Code: Alles auswählen

	for (int i = 1; i < 6; ++i)
	{
		painter->rotate(30.0);
		painter->drawText(-10, -116, 20, 14, Qt::AlignCenter|Qt::TextSingleLine, number.number(i, 10));
		painter->drawLine(88, 0, 96, 0);
	}
Vielen Dank
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du musst dir das einfach mal per Hand auf ein Blatt Papier zeichnen.
* Koordinatensystem, Beschriftung nach unten und rechts positiv, nach links und oben negativ.
* Zeichne deinen Halbkreis ein, und bestimme Koordinaten der einzelnen Punkte (Anfang/Ende der Linien, Links oben des Textes)
* Trage die Werte in deinen "Zeichen-Algo" ein.

Da du sowieso den painter immer drehst, und sich das in der for-Schleife nicht ändert, fängst du erstmal ganz einfach an:
Male nur einen Kreis/ein Keuz in den Koordinatenursprung, einen einzigen Strich und die Beschriftung dazu. Painter natürlich nicht drehen. Wenn dir das klar ist, kannst du das Zeichnen in eine for-Schleife packen, das sollte dann auf Anhieb funktionieren :)

Ich poste hier absichtlich keinen Code, da du sicher öfter über solche Umsetzungsprobleme stolpern wirst, und du dich irgendwann dem Problem stellen musst - also besser jetzt als nie :P
Antworten