Palette mit Farben
-
hi
wie kann ich am einfachsten eine Farbpalette zu dialogbasiertem Fenster anzubinden (es geht mir um solchen, wo man mit eine pipete hex-nummer ne farbe feststellen kann). gibt es fertige lösungen?

grüsse aus polska :p
adamacka
-
Ahoj !!
CColorDialog dlg;
dlg.DoModal();
int i = dlg.GetColor();CString strFarbe;
strFarbe.Format("Ausgewählte Farbe, hexadezimal: %X", i);
AfxMessageBox(strFarbe);Gruß, Joe
-
Vielen Dank

-
hallo noch mal!
da ist glaube ich etwas nicht in ordnung

_________________________________________
CColorDialog dlg;dlg.DoModal();
int i = dlg.GetColor();CString strFarbe;
strFarbe.Format("Ausgewählte Farbe, hexadezimal: %X", i);
AfxMessageBox(strFarbe);
_________________________________________weil wenn ich bei diese anwendung eine zb. blau farbe wähle (dezimal: 0 0 255)
da liefert das ding ein ergebniss: #FF0000

das ist doch rot nicht blau....verstehe aber nicht warum?
grüsse
adam
-
Hallo,
GetColor liefert einen "speziellen" int-Wert, nämlich einen COLORREF-Wert. Ein COLORREF-Wert hat aber diese Darstellung:
0x00bbggrr
D.h, dein Ergebnis ist völlig korrekt, denn der Blau-Wert steht bei einem COLORREF im höchstwertigen Byte des "oberen" 16-Bit-Wortes.
MfG
-
du musst die Bits einfach umdrehen, falls du den Hexwert brauchst:
UINT Rotate(COLORREF clrColor) { return clrColor >> 16 & 0xff | clrColor & 0xff00 | (clrColor & 0xff) << 16; }
-
Hallo,
ich weiss ja nicht, wie Du diese Farbinformation weiter verarbeiten willst.
Wenn Du z.B. diese Farbe benutzen willst, um z.B. ein Rechteck im Dialogfeld zu malen, dann kannst Du die Farbinformation direkt ohne Umwandlung benutzen.
Zum Beispiel:
CDC *cdc; cdc = this->GetDC(); CColorDialog dlg; dlg.DoModal(); int farbe = dlg.GetColor(); cdc->FillSolidRect(10,10,40,40, farbe);Gruß, J.