Bitmap auf Button soll transparent sein
-
Hallo!
Ich habe Bitmaps und Buttons. Und die Bitmaps sollen auf je ihren Button.
Das habe ich mit LoadBitmap und SetBitmap hinbekommen.Dummerweise haben die Bitmaps einen weißen Hintergrund, was ziemlich doof aussieht.
Ich habe noch an anderer Stelle im Programm sowas und da sind die Bitmaps transparent.
Wie kriege ich das weiß weg?
-
Ich würde entweder OnDraw überladen und die Bitmap oder das Icon selbst zeichnen, oder wenn das zu umständlich ist, einfach mal hier was passendes suchen
http://www.codeproject.com/buttonctrl/#Owner%2Ddraw+buttons
denn meine spontane idee dem bitmapbutton icons unterzujubeln wird nicht gehen.
Gruß
-
Hatte genau den selben Fall, hab in dann mit dem "CButtonSSL" der ebenfalls auf der von CTecS vorgeschalgenen Seite zu finden ist gelöst.
Da ich immer wieder die selben Buttons mit entsprechendem Bild brauche hab ich mir einen Ableitung von CButtonSSL gemacht, die Mehtoden enthälte welche spezielle Buttons setzt z.b. SetOKButton, SetCancelButton, SetInfoButton.. dort werden dann Größe, Text, Bitmap gesetzt.
sieht dann z.b. so aus
void CButtonMDSet1::SetMDButtonCancel() { CButtonSSL::SetSize(95,50); CButtonSSL::SetWindowText("&Cancel "); SetMDButtonBitmap(IDB_MDSET1_CANCEL,MDSET1_BTNDEFMASK); CButtonSSL::SetSSLImageAlign(SSL_IMAGE_LEFT | SSL_IMAGE_VCENTER); CButtonSSL::SetSSLButtonStyle (CButtonSSL::GetSSLButtonStyle () & ~SSL_BS_FLAT); CButtonSSL::SetSSLTextAlign(SSL_TEXT_RIGHT | SSL_TEXT_VCENTER); }Wenn das mal impementiert ist es für jeden Button ein Einzeiler in der OnInit Mehtode des Dialogs um die Buttons im gewünschten Design zu bekommen.
sieht dann z.b. so aus
//Set Button Designes m_btn_oUp.SetMDButton3dArrowUp(); m_btn_oDown.SetMDButton3dArrowDown(); m_btn_oLeft.SetMDButton3dArrowLeft(); m_btn_oRight.SetMDButton3dArrowRight(); m_btn_oBack.SetMDButton3dArrowBack(); m_btn_oForw.SetMDButton3dArrowForw();Nachtrag : Die Bitmap Transparenz Farbe (Maske) lässt sich mit SetSSLButtonBitmap definieren, ist hier nur in SetMDButtonBitmap verpackt da eine doppelaufruf von SetSSLButtonBitmap abgefangen wird -> sonst crash.
Noch wichtig ist "Besitzezeichner" vom Button zu deaktivieren -> sonst crash.gruss
Marcus