Ellipse zeichnen



  • Wie zeichnet man eine Ellipse (per Maus-Interaktion) in einer festen Farbe (z.B. Rot) auf beliebigem Hintergrund? Die Ellipse soll "Rubberband"-artig aufgezogen werden können. Bisher verwende ich SetROP2(R2_NOTXORPEN), aber dadurch wechselt die Farbe, wenn der Hintergrund farbig (Bitmap) ist. 😞

    Bisher verwende ich:
    (Startpunkt wird in OnLButtonDown() gesetzt)

    OnMouseMove(UINT nFlags, CPoint point){
    .
    .
     CClientDC *dc = new CClientDC(this);
     if(m_flag_draw){
       CPen pen;
       pen.CreatePen(PS_SOLID,2,RGB(255,0,0));
       dc->SelectObject(pen);
       dc->SetROP2(R2_NOTXORPEN);
       dc->Ellipse(m_old_point.x, m_old_point.y, m_roi_start.x, m_roi_start.y);
       dc->Ellipse(m_roi_start.x, m_roi_start.y, point.x, point.y);
       m_old_point.x = point.x;
       m_old_point.y = point.y;
       pen.DeleteObject();
     }
     delete dc;
    .
    .
    }
    

    Vielen Dank!



  • Hat niemand eine Idee???



  • ändert sich also das Bitmap?

    oder der Umrahmung vom Kreis??

    wenn des vom Bitmap ist dann probier mal mit RedrawWindow(rect)

    rect formatierst du noch auf die Anfangsposition der Maus wo du Gestartet hast

    und Geradige Position der Maus!



  • Es ändert sich die Farbe der Umrahmung, nicht die Bitmap.
    Die Bitmap bleibt erhalten, so wie es sein soll.
    Die Farbe der Umrahmung ändert sich je nach der Farbe bzw. Helligkeit der "Hintergrund" Bitmap.
    Irgendwelche Ideen?



  • hmmm bin mir nicht sicher aber probier doch mal

    nur einmal den Pen zu Createn bei OnInitalDialog()

    pen.CreatePen(PS_SOLID,2,RGB(255,0,0));

    ganz normal in der Header deklarieren

    CPen pen;

    und nur bei MouseMove()

    dc->SelectObject(pen);

    probier halt mal, kann nicht schaden 😃



  • Danke für den Tip - klappt leider nicht. Die Umrandungsfarbe wechselt weiterhin abhängig vom Bitmap-Hintergrund 😞


Anmelden zum Antworten