Mesoscopic Programming

タコさんプログラミング専門

Programming Tips #6 GDI+ の DrawImage() 関数の使い方

解像度の違いによる不具合

画像表示テストしてて、何か表示サイズが変なので調べてみたら分かった。
どうも Graphics インタフェースを通常のデバイスコンテキストに関連付けると、解像度が 96 DPI に固定されるらしいのだ。
したがって画像ファイルが 96 DPI 以外だと表示が変になるのだった。
対処方法は以下のように簡単だった。

VOID DocView :: DrawImage( HDC hdc, INT x, INT y )
{
    Graphics gg( hdc );

    docWidth  = image->GetWidth();
    docHeight = image->GetHeight();

    gg.DrawImage( image, x, y, docWidth, docHeight );
}
解説

DrawImage() 関数には山ほどオーバーライドがあって、そのうち幅と高さを指定できるやつがあるのでそれを使えばよろしい。

以上。