ソフトウェア開発 Win32プログラミング

GDI+を使って画像をビットマップとして読み込む

戻る


GDI+を使って画像をビットマップとして読み込みしたい場合は、次のような コードを使うとよい。

#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;

HBITMAP LoadPictureAsBitmap(LPCSTR pszFileName)
{
    WCHAR wszFileName[MAX_PATH];
    MultiByteToWideChar(CP_ACP, 0, pszFileName, -1, wszFileName, MAX_PATH);

    Color c;
    c.SetFromCOLORREF(GetSysColor(COLOR_3DFACE));

    Bitmap b(wszFileName);
    HBITMAP hbm = NULL;
    b.GetHBITMAP(c, &hbm);

    return hbm;
}

#ifdef UNITTEST
typedef struct tagBITMAPINFOEX
{
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD          bmiColors[256];
} BITMAPINFOEX, FAR * LPBITMAPINFOEX;

BOOL SaveBitmapToFile(LPCTSTR pszFileName, HBITMAP hbm)
{
    ...
}

int main(void)
{
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;

    // GDI+の初期化。
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

    HBITMAP hbm = LoadPictureAsBitmap("a.gif");
    SaveBitmapToFile("a.bmp", hbm);
    DeleteObject(hbm);

    // GDI+の後処理。
    GdiplusShutdown(gdiplusToken);
}
#endif  // def UNITTEST

なお、このコードをコンパイルするには、GDI+のインポートライブラリが必要であり、 実行するのに gdiplus.dll が必要となる。

ソース: loadpic.zip


戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system