Share via


自動スケーリングを回避してパフォーマンスを向上させる

イメージの左上隅のみを DrawImage メソッドに渡すと、Windows GDI+ によってイメージがスケーリングされ、パフォーマンスが低下する可能性があります。

次の DrawImage メソッドの呼び出しでは、 の左上隅 (50,30) を指定しますが、変換先の四角形は指定しません。

graphics.DrawImage(&image, 50, 30);  // upper-left corner at (50, 30)

これは、必要な引数の数に関して DrawImage メソッドの最も簡単なバージョンですが、必ずしも最も効率的であるとは限りません。 現在のディスプレイ デバイスの 1 インチあたりのドット数が、イメージが作成されたデバイスの 1 インチあたりのドット数と異なる場合、GDI+ は、現在のディスプレイ デバイス上の物理サイズが作成されたデバイスの物理サイズにできるだけ近いサイズになるようにイメージをスケーリングします。

このようなスケーリングを防ぐ場合は、目的の四角形の幅と高さを DrawImage メソッドに渡します。 次の例では、同じ画像を 2 回描画しています。 最初のケースでは、描画先の四角形の幅と高さが指定されていないため、画像は自動的に拡大縮小されます。 2 つ目のケースでは、描画先の四角形の幅と高さ (ピクセル単位) が、元の画像の幅と高さと同じになるように指定されています。

Image image(L"Texture.jpg");
graphics.DrawImage(&image, 10, 10);
graphics.DrawImage(&image, 120, 10, image.GetWidth(), image.GetHeight());

次の図は、2 回レンダリングされたイメージを示しています。

異なるスケールの 1 つのイメージの 2 つのバージョンを含むウィンドウのスクリーン ショット