読者です 読者をやめる 読者になる 読者になる

Graphics::DrawImage

GDI+

GDI+編・・・。

Overview of GDI+ (Windows)

GDI+はWindowsXPから登場したGDIの後継サブシステム・・・。
WindowsAPIのGDIで弱かったグラフィック処理が簡単に実現可能になった・・・。
C++ライブラリとして提供されているが、.NETでも使えるらしい・・・。

GraphicsクラスのDrawImageで、libjpeg編で作ったtest.jpgをウィンドウに表示してみる・・・。

プロジェクトを作成して、ソースを追加したら、

f:id:BG1:20160807184000p:plain

追加の依存ファイルにgdiplus.libを追加・・・。

f:id:BG1:20160807184200p:plain

test.jpgを用意・・・。

f:id:BG1:20160807184239p:plain

こんな感じの・・・。

gdiplus.hのインクルード・・・。

gdiSI、gdiTokenは初期化に必要なものだが、とりあえずはこういうものということで・・・。
Gdiplus::GdiplusStartupに渡して初期化・・・。

Gdiplus::GdiplusShutdownで終了処理・・・。

staticなGdiplus::ImageオブジェクトポインタpImageを用意して、WM_CREATE時にnew Gdiplus::Imageでオブジェクトを作成し、pImageに渡す・・・。
コンストラクタ引数に"test.jpg"を渡すことで、生成時に"test.jpg"を読み込んでいる・・・。

WM_PAINTでGdiplus::Graphicsオブジェクトのgraphicsを作成・・・。
この時にgraphicsのコンストラクタ引数にhDCを渡している・・・。
これで以降の描画処理をgraphicsによって行うことができる・・・。
あとは、graphics.DrawImageでpImageを描画するだけ・・・。

Graphics.DrawImage(Image*, INT, INT) method (Windows)

第2、第3引数は描画位置で左上隅の(0, 0)にしている・・・。

WM_DESTROY時にpImageを破棄・・・。

これで、

f:id:BG1:20160807185627p:plain

こんな簡単に"test.jpg"が表示できた・・・。

Sample/gdiplus/Graphics/DrawImage/src/Graphics at master · bg1bgst333/Sample · GitHub