Как вы обнаружили, ::LoadBitmap
(и более новый ::LoadImage
) имеют дело только с .bmp
s.Безусловно, самое простое решение - преобразовать ваше изображение в .bmp
.
. Если изображение имеет прозрачность, его можно преобразовать в 32-битное растровое изображение ARGB (здесь есть инструмент под названием AlphaConv , что может конвертировать его).Затем загрузите изображение, используя метод CImage
class LoadFromResource
.Передайте CImage
на m_staticLogo.SetBitmap()
.
Но если вам действительно нужно, чтобы он был .png
, это можно сделать.
Метод1 (более простой способ): Загрузить .png
из файла, используя CImage::Load
.Передайте CImage
в m_staticLogo.SetBitmap()
.
Метод 2 (более сложный способ): Загрузите .png
из ресурса, загрузив ресурс в COM IStream
и используяCImage::Load
.(ПРИМЕЧАНИЕ: CImage::LoadFromResource
выглядит заманчиво, но не будет работать с графикой .png
).Чтобы получить ресурс в COM IStream
, см. эту статью Codeproject .Обратите внимание, что статья работает с Gdiplus::Bitmap
, но ключевая часть заключается в том, как создать IStream
, который вы сможете адаптировать для CImage
.Наконец, передайте CImage
в m_staticLogo.SetBitmap()
.
Редактировать: Обновлен для использования CImage
, что проще, чем Gdiplus::Bitmap
.