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öglichAusserdem 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