Gif anstelle von BMP auf CButton

sand13r

Erfahrenes Mitglied
Hallo Freunde der Sonne,

ich habe eine Frage und zwar kann ich ja mithilfe von

C++:
m_cBack.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_EXIT)));

ein Bmp auf einen CButton bekommen, nur leider sollte dieses Bild transparent sein und da das mit einem Gif gehen würde wollte ich einfach das Gif anstelle des BMP laden, kann ja eigentlich so schwer nicht sein oder?

ich habe es schon mit ICONS hinbekommen die ja auch transparent sein können aber leider auf 127*127 Pixel beschränkt sind.. deshlab sollte ich wohl Gif oder png nehmen.


hat da jemand Erfahrung mit oder kann mir einen Rat oder Tipp geben

wäre super

greetz sand13r
 
Hallo,

leider nicht so einfach, da die MFC keine GIF-Unterstützung mitbringt. Um eine GIF-Datei zu öffnen müsste man z.B. GDI+ bemühen. Das zweite Problem besteht dann darin, die GIF-Datei auf den Button zu bekommen. Mit SetIcon() bzw. SetBitmap() kommt man da nicht allzuweit, man müsste wahrscheinlich sein eigenes Button-Control bauen.

Ich habe allerdings einen anderen Tipp für dich:

1. Erzeuge eine Bitmap (BMP) in der gewünschten Größe. Die Bereiche, die transparent werden sollen, machst du z.B. weiss oder in irgendeiner anderen Farbe, die im Bild sonst nicht vorkommt.
2. Deklariere im Header des Dialoges eine CImageList:
C++:
CImageList m_imageList;
3. In "InitDialog" musst du dann die ImageList initialisieren und die Bilder den Buttons zuweisen:
C++:
CBitmap bmp;
bmp.LoadBitmap(IDB_EXIT);

m_imageList.Create( 200,                    // Breite
                    200,                    // Höhe
                    ILC_MASK | ILC_COLOR24, // Flags 
                    1,                      // Anzahl der Bilder 
                    0                       // Anzahl Bilder, um die Imagelist wachsen kann
                  );

m_imageList.Add(  &bmp,                     // Bitmap
                   RGB(255,255,255)         // Farbe, die transparent werden soll
               );

m_cBack.SetIcon(m_imageList.ExtractIcon(0));
Die ImageList kann auch mehrere, gleich große Bilder enthalten. Das Bitmap muss dann entprechend breit sein, da die Bilder dort nebeneinander angeordnet werden. Außerdem können auch True-Color Bitmaps verwendet werden. Diese müssen dann allerdings außerhalb des Visual Studios erstellt und mit "Importieren" in die Resourcen eingefügt bzw. gleich aus einer externen Bitmap-Datei gelesen werden.

Gruß
MCoder
 
Hallo und guten Morgen,


wenn du wüsstest wie FROH ich bin das du mir geholfen hast

DANKEEEEEEEEEEEEESCHÖÖÖÖN echt super
funktioniert einwandfrei echt super vielen DANK ^^
super super super.. wie lang i da gesucht hab und alles ausprobiert mit BITBLITTING und so weiter und dann geht das so super VIELEN DANK^^

wie kann man USER bewerten da muss ne 1mit sternchen HIN^^


greetz sand13r



und weils so schön war glei nochmal DANKESCHÖÖÖÖN
 
Zurück