透過が設定してあるPNG画像を、MFCのCImageで描画してみた。
コードは、こんな感じ。
// 読込
CImage img;
img.Load(strFileName);
// 描画
img.Draw(pDC->m_hDC, left, top, w, h);
元画像には、赤・青・緑の原色はつかってないのに、
ところどころ、赤・青・緑。
なんでやねんっ!
気を取り直して、GDI+で書き直し。
//初期化(アプリケーション初期化時に、1回だけでOK)
ULONG_PTR nToken;
Gdiplus::GdiplusStartupInput sGdiplusStartupInput;
Gdiplus::GdiplusStartup(&nToken,&sGdiplusStartupInput,NULL);
// 読込
Gdiplus::Bitmap* pImg = Gdiplus::Bitmap::FromFile(strFileName, TRUE);
// 描画
Gdiplus::Graphics cGraphics(pDC->m_hDC);
cGraphics.DrawImage(pImage,(Gdiplus::REAL)left, (Gdiplus::REAL)top
,(Gdiplus::REAL)w, (Gdiplus::REAL)h);
// 終了(アプリケーション終了時に、1回だけでOK)
Gdiplus::GdiplusShutdown(nToken);
赤・青・緑の原色は出なくなった。
よっしゃーっ