PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QCanvasPolygon



kext
21-10-2003, 15:34
hallo wissende,

ich habe in einem QCanvasView ein Bild mit einer ROI. Die ROI hat eine Ellipsenform, kann aber gedreht sein. Nun möchte ich einen Rahmen um diese Ellipse zeichen (kein Rechteck sondern Ellipsenform). Ich mache das bisher so:




QCanvasPolygon *polygon1 = new QCanvasPolygon(m_canvas);
QPointArray parray(60);

polygon1->setBrush(QBrush(QColor(100,255,0),Qt::Dense6Patter n ));
//polygon1->setPen( QPen(color));

static double t;
static double x, y;

int pntx,pnty,pntcx,pntcy,zaehler;

x = a;
y = 0;
zaehler = 0;

for (int n=0; n<361; n+=6)
{
t = (double) n * pi / 180.0;
x = a * cos(t);
y = b * sin(t);
Rotate(x, y, phi);
pntcx = (int) (xs + x + 0.5);
pntcy = (int) (ys + y + 0.5); // Spiegelung an der Y-Achse

parray[zaehler] = QPoint(pntcx,pntcy);
zaehler++;
}
polygon1->setPoints(parray);
polygon1->show();


Problem:
Ich möchte einen Rahmen zeichnen. So wie es ich im Moment mache, Qt:Dense6Pattern beim setBrush vom polygon bekomme ich eine gefüllte fläche und man sieht nicht was markiert wurde.

Dachte an:



polygon1->setBrush(QBrush(QColor(100,255,0),Qt::NoBrush));
polygon1->setPen( QPen(color));


aber das geht nicht. wird garnichts angezeigt.


Hilfe!

axeljaeger
21-10-2003, 15:45
Du willst nur einen Rahmen und keine Füllung? QPen ist der Stift für den Rahmen und QBrush ist die Füllung. Du müsstest setBrush(Qt::NoBrush) setzen. Was du im Moment machst (polygon1->setBrush(QBrush(QColor(100,255,0),Qt::NoBrush));
) erscheint mir unlogisch, setzt du doch eine Zeichenfarbe für etwas, was gar nicht gezeichnet werden soll. Du könntest nochmal versuchen, beim Pen auch noch einen PenStyle mit anzugeben.

kext
22-10-2003, 07:28
moin,

danke erstmal. habs jetzt so:




polygon1->setBrush(Qt::NoBrush);
polygon1->setPen(QPen(color, 3,Qt::SolidLine));



wird aber auch kein rahmen angezeigt

anda_skoa
22-10-2003, 09:32
Kontrolliere mal die Punkte kurz vor dem setPoints().
Vielleicht haben die falsche Werte.

Ich hätte da noch eine Frage zu static double x, y;
Warum hast du die static, wenn du sie bei jedem Aufruf eh neu setzt?
t sieht auch wie eine einfache temporäre Variable aus.

Ciao,
_

kext
22-10-2003, 09:51
die werte passen, aber ich hab in der doku zum QCanvasPolygon noch das hier gefunden:

"Note that QCanvasPolygon does not support an outline (the pen is always NoPen). "

Das hört sich nicht gut an.



Ich hätte da noch eine Frage zu static double x, y;
Warum hast du die static, wenn du sie bei jedem Aufruf eh neu setzt?
t sieht auch wie eine einfache temporäre Variable aus.

hast recht, ein überbleibsel:D

anda_skoa
22-10-2003, 10:20
Original geschrieben von kext
die werte passen, aber ich hab in der doku zum QCanvasPolygon noch das hier gefunden:

"Note that QCanvasPolygon does not support an outline (the pen is always NoPen). "

Das hört sich nicht gut an.


Da musst du wahrscheinlich den QCanvasView ableiten und den Rahmen dort mit der QPainter API zeichnen.

Ciao,
_

kext
22-10-2003, 10:59
och, da hab ich doch meine daten nicht. die sind in einer anderen klasse, die von meiner canvasview aufgerufen wird