Kreis Teile Zeichnen [gelöst]

Verschiedenes zu Qt
Antworten
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Kreis Teile Zeichnen [gelöst]

Beitrag von Qt-nator »

Hi,

ich hab Folgendes Problem:

Man stellt sich vor man hat einen Kreis, und bestimmte Teile von diesem Kreis müssen dicker und eine andere Farbe haben als die Restteile vom Kreis.

Es geht hier bei mir jetzt um:

4tel Kreis
5tel Kreis
8tel Kreis

Stücke.

Nun hab ich das mit QRectF versucht was aber nicht von erfolg gekrönt war.

Jetzt meine Frage:

Kann ich was anders außer QRectF dazu verwenden und wenns nur mit QRectF geht könnte mir jemand das erklären?

Gruß

Qt-nator
Zuletzt geändert von Qt-nator am 1. Juli 2008 14:27, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich weiß nicht genau was Du möchtest, aber hast Du schonmal QPainter::drawPie() angeschaut?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

ja das ist so ungefähr das was ich brauche. Nur die Striche zur Mitte hin stören.

Also ich hab einen abgeschlossenen Kreis. Eine Durchgezogene Linie und auf diesem Kreis gibt es bestimmte stellen wo die Linie dicker sein muss.

Deswegen wollte ich die Linien einfach neu drüberzeichnen. Dafür brauch ich halt denn die Spezielen Kreis-Teile.

Und wenn ich dann weis wie ich so "Teile" erstellen kann dann ist das setzen ja kein Problem mehr.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn die Striche stören schau Dir die Doku nochmal an.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

Meinst du"drawArc" ?

Also ich hab da jetzt mal was versucht und habe einen Kreis erstellt. Aber was ich noch nicht ganz verstehe ist die Positionierung und das setzen Punkte.

Code: Alles auswählen

 QRectF rectangle(dWidthHalf - 80, dHeigthHalf -60, 80.0, 60.0);
 int startAngle =  16;
 int spanAngle = 90 * 16;
 painter.drawArc(rectangle, startAngle, spanAngle); 

 int startAngle1 = 90 * 16;
 painter.drawArc(rectangle, startAngle1, spanAngle); 

 int startAngle2 = 180 * 16;
 painter.drawArc(rectangle, startAngle2, spanAngle); 

 int startAngle3 = 270 * 16;
 painter.drawArc(rectangle, startAngle3, spanAngle);
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

startAngle bedarf wohl keiner Erläuterung und spanAngle ist einfach der Winkel wie weit gezeichnet werden soll. 90*16=1440 = 4 Vollkreise, das wird es dann wohl nicht sein :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

macman hat geschrieben:90*16=1440 = 4 Vollkreise, das wird es dann wohl nicht sein :-)
doch - Qt rechnet hier in 1/16 Grad.
Was sein Problem jetzt ist weiß ich aber trotzdem nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

The startAngle and spanAngle must be specified in 1/16th of a degree, i.e. a full circle equals 5760 (16 * 360). Positive values for the angles mean counter-clockwise while negative values mean the clockwise direction. Zero degrees is at the 3 o'clock position.

Also ist das doch richtig. Gut.

Mein Problem ist das ich nicht ganz verstehe wie ich diesen Bogen positioniern kann.

Ich kann ja x,y,w und h übergeben. Nur verstehe ich das zusammen spiel nicht so ganz.
Zuletzt geändert von Qt-nator am 30. Juni 2008 15:44, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Christian81 hat geschrieben:doch - Qt rechnet hier in 1/16 Grad.
Eiwei, man sollte vorher in die Doku gucken :oops:
Christian81 hat geschrieben:Was sein Problem jetzt ist weiß ich aber trotzdem nicht.

Vermutlich wird das Rectangle falsch berechnet. Für Kreise braucht man ein Quadrat und kein Rechteck.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

Ich hab jetzt mal rumprobiert und bin durch Zufall da drauf gekommen:

Code: Alles auswählen

 QRectF rectangle(dWidthHalf - 55, dHeigthHalf - 55, 110.0, 110.0);
 int startAngle = 45*16;
 int spanAngle =  -180* 16;
 painter.drawArc(rectangle, startAngle, spanAngle); 
Macht von einem Teil genau das was ich brauche. Nur hab ich die 55 und die 110 durch Probieren erhalten.

Und verstehen wie das mit dem drawArc funktioniert tu ich immernoch nicht.
Kann mir das nicht mal einer Erklären?

Wie ich start und end-Punkt meiner Linien setzen kann z.b.?
Dateianhänge
Bild.GIF
Bild.GIF (9.13 KiB) 5425 mal betrachtet
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich glaubedieser Aufruf ist verständlicher.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten