Kann die Farben nicht speichern



  • Hallo.
    Ich erzeuge in meinem MFC-Programm zwei Farben mit denen ich zwei Objekte male.

    CBrush m_sColor_1;
    CBrush m_sColor_2;

    m_sColor_1.CreateSolidBrush(RGB(0, 255, 0));
    m_sColor_2.CreateSolidBrush(RGB(0, 0, 255))

    Ich will nun die Farben tauschen. Dazu habe ich mir so zu sagen ein Temporäres Farbobjekt geschaffen.

    CBrush m_sColorTemp;

    Nun wollte ich mit

    m_sColorTemp = m_sColor_1;
    m_sColor_1 = m_sColor_2
    m_sColor_2 = m_sColorTemp;

    die Farben tauschen. Das soll in
    void Prog4View::OnLButtonDown(UINT nFlags, CPoint p...
    passieren. Also nur wnn ich einen klick mache.

    Das geht aber leider nicht.

    Habe jemanden um hilfe gebeten.

    Der hat mir volgendes vorgeschlagen

    m_sColorTemp = SelectObject(hDC, m_sColor_1);
    m_sColor_1 = SelectObject(hDC, m_sColor_2);
    m_sColor_2 = SelectObject(hDC, m_sColorTemp);

    Habe ich getestet. Bekomme aber die Fehlermeldung das hDC nicht existiert.
    Habe daraufhin mit HDC hDC; in Prog4View.h erzeugt.

    Nun bekomme ich die Fehlermeldung error c2582:"CBrush":"Operator =" ist nicht
    vefügbar.

    Weiss jemand Rat oder gibt es eine andere Methode die Farben zu tauschen?

    cebion



  • Versuchs mal mit COLORREF Variablen



  • Hallo lieselotte.
    Gut gemeint.
    Bin aber Anfänger und kann damit gar nichts anfangen.

    cebion



  • Hmm dein Code ist rel. sinnfrei... warum holst du dir einen DC Hanlde und nicht einfach das CDC Object? dann kannst du dessen SelectObject Methode auch benutzen die auch CBrush usw unterstützt ...



  • Hallo Evil.

    Also nun mit CDC.
    Geht nicht.
    Bin in die Funktion
    void CEx04View::OnDraw(CDC* pDC)
    {
    hBrush0 = SelectObject(pDC, hBrush1);

    }

    gegangen.
    Bekomme die Fehlermeldung error c2664:“SelectObject“ :Konvertierung des Parameters 1 von „class CDC *“
    In „struct HDC__ *” nicht möglich

    Ausserdem soll das alles eigentlich in der Methode
    void CEx04View::OnLButtonDown(UINT nFlags, CPoint point)
    passieren.
    Nur da habe ich kar kein CDC Objekt.???

    cebion



  • 1. Les mal genau was ich geschrieben hab ... von Memberfunktion---
    2. Guck dir mal die GetDC (oder so ähnlich hieß die Func.) an...



  • Vielen dank für die Hilfe.
    Habe es aber mitlerweilen selbst hinbekommen.
    Habe einfach zeiger benutzt.

    Falls es jemanden interesiert.

    CBrush col_1, col_2;
    CBrush *col_alt_1, *col_alt_2;

    dann

    col_1.CreateSolidBrush(RGB(0, 255, 0));
    col_2.CreateSolidBrush(RGB(255, 0, 0));

    col_alt_1 = &col_1;
    col_alt_2 = &col_2;

    und dann zum tauschen

    col_alt_1 = &col_2;
    col_alt_2 = &col_1;

    cebion


Anmelden zum Antworten