Wie Sie entdeckt haben, ::LoadBitmap
(und die neuere ::LoadImage
) nur mit .bmp
s beschäftigen. Bei weitem die einfachste Lösung ist, Ihr Bild in eine .bmp
zu konvertieren. Wenn das Bild transparent ist, kann es in eine 32-Bit-ARGB-Bitmap konvertiert werden (hier ist ein Tool namens AlphaConv, das es konvertieren kann). Dann laden Sie das Bild mit der CImage
Klasse LoadFromResource
Methode. Übergeben Sie die 10 an m_staticLogo.SetBitmap()
.
Aber wenn Sie wirklich brauchen es ein .png
, kann es getan werden.
Methode 1 (der einfachere Weg): laden .png
aus einer Datei mit CImage::Load
. Übergeben Sie die 10 an m_staticLogo.SetBitmap()
.
Methode 2 (je härter Fahrt): laden .png
von einer Ressource durch die Ressource in einem COM IStream
Laden und Verwenden CImage::Load
. (HINWEIS: CImage::LoadFromResource
sieht verlockend aus, funktioniert aber nicht mit einer .png
Grafik). Informationen zum Abrufen der Ressource in COM IStream
finden Sie unter this Codeproject article. Beachten Sie, dass der Artikel mit Gdiplus::Bitmap
funktioniert, aber das Schlüsselelement ist, wie Sie das IStream
erstellen, das Sie für CImage
anpassen können. Übergeben Sie schließlich die CImage
an m_staticLogo.SetBitmap()
.
Bearbeiten: Aktualisiert, um zu verwenden, die einfacher ist als Gdiplus::Bitmap
.
Duplikat von http://StackOverflow.com/Questions/3005685/ – ulatekh