Button einfärben?

Habe mich gewundert, daß nur schwarz und weiß korrekt angezeigt wurde. Da viel mir ein, das Windows zwei Farbwerte vertauscht.

Die letzte Kombination (wie immer soll man von hinten anfangen) :p die hat dann funtioniert.

Code:
                lpRgb[nCol].rgbtRed   = GetBValue(crColor);
                lpRgb[nCol].rgbtGreen = GetGValue(crColor);
                lpRgb[nCol].rgbtBlue  = GetRValue(crColor);


Gruß Robert
 
Hab noch eine Frage zum Zerstören des Objects:

Wenn ich
Code:
m_ButtonControl.SetBitmap(CreateColoredBitmap(500,500,m_Kastanie));

mache, muß ich dann auch was zerstören?
 
Was hast du denn für ein Windows bzw. wie erzeugst du die COLORREF Variable? Bei funktioniert das auch ohne Vertauschen der RGB-Werte richtig :confused:.

Um das DeleteObject() kommst du nicht drumherum. Mit der Funktion CreateDIBSection() in meiner Funktion wird nämlich vom System ein Speicherbereich für das Bitmap angelegt, den du dann später selber wieder freigeben musst.
Du solltest den Handle (HBITMAP) also schon für diesen Zweck speichern.
 
Dann vermute ich, das es an meinen Farben liegt.

Habe mir die Werte der 16 Farben aus dem Internet geholt. Eine Tabelle mit RGB(X,Y,Z) hab ich nicht gefunden.
Code:
const COLORREF m_Violett = 8388736;
const COLORREF m_Schwarz =0;
const COLORREF m_Gelb =16776960;
const COLORREF m_Gruen = 32768;
const COLORREF m_Oliv =8421376;
const COLORREF m_DunkelBlau =128;
const COLORREF m_Kastanie =8388608;
const COLORREF m_DunkelGruen =32896;
const COLORREF m_Grau =12632256;
const COLORREF m_Silber =8421504;
const COLORREF m_Rot =16711680;
const COLORREF m_HellGruen =65280;
const COLORREF m_Blau =255;
const COLORREF m_Lila =16711935;
const COLORREF m_HellBlau =0x00FFFF;//65535
const COLORREF m_Weiss =16777215;
Nur um sicher zu gehen:
Wenn ich immer eine Variable benutze um die Bitmap zwischen zu Speichern, muß ich auch nur die eine zerstören?

Gruß Robert
 
Ja, die Farbwerte entsprechen nicht dem, was RGB() zurückgeben würde. Alternativ könntest du mit einem Grafikprogramm (z.B. über die Pipette) die RGB-Werte ermitteln. Eine entsprechende Anzeige ist eigentlich bei jeder Farbauswahl dabei.

Zum Thema Speicherfreigeben:
Jedes Handle, das du mit CreateColoredBitmap() bekommst, musst du auch wieder zum Freigeben verwenden.
Wenn du den Handle jedes erzeugten Bitmaps immer in die gleiche Variable speicherst, kannst du damit auch nur den zuletzt angelegten Speicherbereich wieder freigeben. Die vorherigen bleiben als Speicherleichen zurück (ohne Chance, sie freizugeben, da du den Schlüssel dazu quasi weggeworfen hast) und bringen bei stetiger Nutzung des Programmes irgendwann das Windows aus dem Tritt.
 
Wenn ich richtig schlußfolgern kann, müßte das hier funktionieren

Code:
HBITMAP Farbeinstellung::CreateColoredBitmap(UINT uiWidth, UINT uiHeight, COLORREF crColor)
{
	:: DeleteObject(m_AktBitmap);

    // Bitmap erzeugen    
    //crColor=0x00FFFF;
    HDC hdc = ::CreateCompatibleDC(NULL);

Das zerstöre ich es, wenn ich ein neues mache. Dann muß ich nur noch das Letzte zerstören.

Gruß Robert

PS: Bin sehr froh über solch qualifizierten Antworten
 
Das kommt mir irgendwie kurios vor.

Wenn ich beim OnInitDialog alle Buttons hintereinander färbe (mit der gleichen Variable), dann ist nur der letzte gefärbt.
Das könnte ich ja noch verstehen, Da ich das Object ja jedes mal zerstöre, wenn ich den nächsten button färbe.
Dann habe ich mir für jeden Button eine eigene Variable für die Bitmap gemacht. Das funktioniert.
(Nebenbei das ist ein Dialog um verschiedene Schriftfarben einzustellen. )

Jetzt kommt was ich nicht verstehe:

Beim Druck des Buttons erscheint ein PupupMenue mit den verschiedenen Farben. Jetzt benutze ich nur noch diese eine Variable, die ja bei jedem neuen Einstellen zerstört wird. Da kann ich machen was ich will es funktioniert. Was ist der Unterschied ob ich die hintereinander färbe oder wie jetzt nachher einzeln?

Allerdings wird der Button manchmal beim Druck silber bis ich eine neue Farbe gewählt habe. Werde etwas sicheres machen, aber das versteh ich nicht, weil wenn etwas passiert, sollte es bei gleichen Umständen auch immer wieder so sein.
 
Zu den Farbwerten:
Ich kann mich erinnern, mal eine Header-Datei "colornames.h" gesehen zu haben. Da waren Dutzende von Farben als RGB() definiert. Kann mich im Moment aber nicht erinnern, wo das war, vielleicht bei Code Project.

Mfg

langer
 
Hab sie gefunden :p

Code:
#if !defined(__ID_COLOR_NAMES_H)
#define __ID_COLOR_NAMES_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

const COLORREF colAliceBlue            = RGB(240,248,255);
const COLORREF colAntiqueWhite         = RGB(250,235,215);
const COLORREF colAqua                 = RGB(  0,255,255);
const COLORREF colAquamarine           = RGB(127,255,212); 
const COLORREF colAzure                = RGB(240,255,255);
const COLORREF colBeige                = RGB(245,245,220);
const COLORREF colBisque               = RGB(255,228,196);
const COLORREF colBlack                = RGB(  0,  0,  0);
const COLORREF colBlanchedAlmond       = RGB(255,255,205);
const COLORREF colBlue                 = RGB(  0,  0,255);
const COLORREF colBlueViolet           = RGB(138, 43,226);
const COLORREF colBrown                = RGB(165, 42, 42);
const COLORREF colBurlywood            = RGB(222,184,135);
const COLORREF colCadetBlue            = RGB( 95,158,160);
const COLORREF colChartreuse           = RGB(127,255,  0);
const COLORREF colChocolate            = RGB(210,105, 30);
const COLORREF colCoral                = RGB(255,127, 80);
const COLORREF colCornflowerBlue       = RGB(100,149,237);
const COLORREF colCornsilk             = RGB(255,248,220);
const COLORREF colCrimson              = RGB(220, 20, 60);
const COLORREF colCyan                 = RGB(  0,255,255);
const COLORREF colDarkBlue             = RGB(  0,  0,139);
const COLORREF colDarkCyan             = RGB(  0,139,139);
const COLORREF colDarkGoldenRod        = RGB(184,134, 11); 
const COLORREF colDarkGray             = RGB(169,169,169);
const COLORREF colDarkGreen            = RGB(  0,100,  0);
const COLORREF colDarkKhaki            = RGB(189,183,107);
const COLORREF colDarkMagenta          = RGB(139,  0,139);
const COLORREF colDarkOliveGreen       = RGB( 85,107, 47); 
const COLORREF colDarkOrange           = RGB(255,140,  0); 
const COLORREF colDarkOrchid           = RGB(153, 50,204);
const COLORREF colDarkRed              = RGB(139,  0,  0);
const COLORREF colDarkSalmon           = RGB(233,150,122);
const COLORREF colDarkSeaGreen         = RGB(143,188,143);
const COLORREF colDarkSlateBlue        = RGB( 72, 61,139);
const COLORREF colDarkSlateGray        = RGB( 47, 79, 79);
const COLORREF colDarkTurquoise        = RGB(  0,206,209);
const COLORREF colDarkViolet           = RGB(148,  0,211);
const COLORREF colDeepPink             = RGB(255, 20,147);
const COLORREF colDeepSkyBlue          = RGB(  0,191,255);
const COLORREF colDimGray              = RGB(105,105,105);
const COLORREF colDodgerBlue           = RGB( 30,144,255);
const COLORREF colFireBrick            = RGB(178, 34, 34);
const COLORREF colFloralWhite          = RGB(255,250,240);
const COLORREF colForestGreen          = RGB( 34,139, 34);
const COLORREF colFuchsia              = RGB(255,  0,255);
const COLORREF colGainsboro            = RGB(220,220,220);
const COLORREF colGhostWhite           = RGB(248,248,255);
const COLORREF colGold                 = RGB(255,215,  0);
const COLORREF colGoldenRod            = RGB(218,165, 32);
const COLORREF colGray                 = RGB(127,127,127);
const COLORREF colGreen                = RGB(  0,128,  0);
const COLORREF colGreenYellow          = RGB(173,255, 47);
const COLORREF colHoneyDew             = RGB(240,255,240);
const COLORREF colHotPink              = RGB(255,105,180);
const COLORREF colIndianRed            = RGB(205, 92, 92);
const COLORREF colIndigo               = RGB( 75,  0,130);
const COLORREF colIvory                = RGB(255,255,240);
const COLORREF colKhaki                = RGB(240,230,140);
const COLORREF colLavender             = RGB(230,230,250);
const COLORREF colLavenderBlush        = RGB(255,240,245);
const COLORREF colLawngreen            = RGB(124,252,  0);
const COLORREF colLemonChiffon         = RGB(255,250,205);
const COLORREF colLightBlue            = RGB(173,216,230);
const COLORREF colLightCoral           = RGB(240,128,128);
const COLORREF colLightCyan            = RGB(224,255,255);
const COLORREF colLightGoldenRodYellow = RGB(250,250,210);
const COLORREF colLightGreen           = RGB(144,238,144);
const COLORREF colLightGrey            = RGB(211,211,211);
const COLORREF colLightPink            = RGB(255,182,193);
const COLORREF colLightSalmon          = RGB(255,160,122);
const COLORREF colLightSeaGreen        = RGB( 32,178,170);
const COLORREF colLightSkyBlue         = RGB(135,206,250);
const COLORREF colLightSlateGray       = RGB(119,136,153);
const COLORREF colLightSteelBlue       = RGB(176,196,222);
const COLORREF colLightYellow          = RGB(255,255,224);
const COLORREF colLime                 = RGB(  0,255,  0);
const COLORREF colLimeGreen            = RGB( 50,205, 50);
const COLORREF colLinen                = RGB(250,240,230);
const COLORREF colMagenta              = RGB(255,  0,255);
const COLORREF colMaroon               = RGB(128,  0,  0);
const COLORREF colMediumAquamarine     = RGB(102,205,170);
const COLORREF colMediumBlue           = RGB(  0,  0,205);
const COLORREF colMediumOrchid         = RGB(186, 85,211);
const COLORREF colMediumPurple         = RGB(147,112,219);
const COLORREF colMediumSeaGreen       = RGB( 60,179,113);
const COLORREF colMediumSlateBlue      = RGB(123,104,238);
const COLORREF colMediumSpringGreen    = RGB(  0,250,154);
const COLORREF colMediumTurquoise      = RGB( 72,209,204);
const COLORREF colMediumVioletRed      = RGB(199, 21,133);
const COLORREF colMidnightBlue         = RGB( 25, 25,112);
const COLORREF colMintCream            = RGB(245,255,250);
const COLORREF colMistyRose            = RGB(255,228,225);
const COLORREF colMoccasin             = RGB(255,228,181);
const COLORREF colNavajoWhite          = RGB(255,222,173);
const COLORREF colNavy                 = RGB(  0,  0,128);
const COLORREF colNavyblue             = RGB(159,175,223);
const COLORREF colOldLace              = RGB(253,245,230);
const COLORREF colOlive                = RGB(128,128,  0);
const COLORREF colOliveDrab            = RGB(107,142, 35);
const COLORREF colOrange               = RGB(255,165,  0);
const COLORREF colOrangeRed            = RGB(255, 69,  0);
const COLORREF colOrchid               = RGB(218,112,214);
const COLORREF colPaleGoldenRod        = RGB(238,232,170);
const COLORREF colPaleGreen            = RGB(152,251,152);
const COLORREF colPaleTurquoise        = RGB(175,238,238);
const COLORREF colPaleVioletRed        = RGB(219,112,147);
const COLORREF colPapayaWhip           = RGB(255,239,213);
const COLORREF colPeachPuff            = RGB(255,218,185);
const COLORREF colPeru                 = RGB(205,133, 63);
const COLORREF colPink                 = RGB(255,192,203);
const COLORREF colPlum                 = RGB(221,160,221);
const COLORREF colPowderBlue           = RGB(176,224,230);
const COLORREF colPurple               = RGB(128,  0,128);
const COLORREF colRed                  = RGB(255,  0,  0);
const COLORREF colRosyBrown            = RGB(188,143,143);
const COLORREF colRoyalBlue            = RGB( 65,105,225);
const COLORREF colSaddleBrown          = RGB(139, 69, 19);
const COLORREF colSalmon               = RGB(250,128,114);
const COLORREF colSandyBrown           = RGB(244,164, 96);
const COLORREF colSeaGreen             = RGB( 46,139, 87);
const COLORREF colSeaShell             = RGB(255,245,238);
const COLORREF colSienna               = RGB(160, 82, 45);
const COLORREF colSilver               = RGB(192,192,192);
const COLORREF colSkyBlue              = RGB(135,206,235);
const COLORREF colSlateBlue            = RGB(106, 90,205);
const COLORREF colSlateGray            = RGB(112,128,144);
const COLORREF colSnow                 = RGB(255,250,250);
const COLORREF colSpringGreen          = RGB(  0,255,127);
const COLORREF colSteelBlue            = RGB( 70,130,180);
const COLORREF colTan                  = RGB(210,180,140);
const COLORREF colTeal                 = RGB(  0,128,128);
const COLORREF colThistle              = RGB(216,191,216);
const COLORREF colTomato               = RGB(255, 99, 71);
const COLORREF colTurquoise            = RGB( 64,224,208);
const COLORREF colViolet               = RGB(238,130,238);
const COLORREF colWheat                = RGB(245,222,179);
const COLORREF colWhite                = RGB(255,255,255);
const COLORREF colWhiteSmoke           = RGB(245,245,245);
const COLORREF colYellow               = RGB(255,255,  0);
const COLORREF colYellowGreen          = RGB(139,205, 50);

#endif // __ID_COLOR_NAMES
 
Robertica hat gesagt.:
Beim Druck des Buttons erscheint ein PupupMenue mit den verschiedenen Farben. Jetzt benutze ich nur noch diese eine Variable, die ja bei jedem neuen Einstellen zerstört wird. Da kann ich machen was ich will es funktioniert. Was ist der Unterschied ob ich die hintereinander färbe oder wie jetzt nachher einzeln?
So ganz verstehe ich deine Frage nicht. Für jeden Button brauchst du ein eigenes Bitmap (hast du ja bereits gemacht). Wird das Bitmap zerstört ist natürlich auch die Farbe weg. Hast du jetzt eigentlich noch mehrere Buttons oder nur noch einen mit dem Popup-Menü? Ist doch prima, wenn es jetzt funktioniert?

Robertica hat gesagt.:
(Nebenbei das ist ein Dialog um verschiedene Schriftfarben einzustellen. )
Für solche Aufgaben gibt's übrigens einen Windows-Standarddialog. Schaue dir mal die Klasse CColorDialog an. Zumindest dein Popup-Menü könntest du damit ersetzen und würdest dir damit das Hantieren mit irgendwelchen Farbtabellen ersparen.
 

Neue Beiträge

Zurück