Anzeige:
Ergebnis 1 bis 7 von 7

Thema: QCanvasPolygon

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15

    QCanvasPolygon

    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:


    Code:
    QCanvasPolygon *polygon1 = new QCanvasPolygon(m_canvas);
    QPointArray parray(60);
    
    polygon1->setBrush(QBrush(QColor(100,255,0),Qt::Dense6Pattern ));
    //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:

    Code:
    polygon1->setBrush(QBrush(QColor(100,255,0),Qt::NoBrush));
    polygon1->setPen( QPen(color));
    aber das geht nicht. wird garnichts angezeigt.


    Hilfe!

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    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.

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    moin,

    danke erstmal. habs jetzt so:

    Code:
    polygon1->setBrush(Qt::NoBrush);
    polygon1->setPen(QPen(color, 3,Qt::SolidLine));
    wird aber auch kein rahmen angezeigt

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    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

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    och, da hab ich doch meine daten nicht. die sind in einer anderen klasse, die von meiner canvasview aufgerufen wird

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •