DrawRectExtendGraphを使用して縮小描画を行っているのですが、指定範囲外の画像がコピーされる事があり、対処に困っております。
指定範囲外の画像がコピーされたり、されなかったりと条件がいまいちよく分かりません。
再現プログラムは以下の通りです。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int handle;
// ウインドウモードに変更
ChangeWindowMode(TRUE);
// DXライブラリの初期化
if (DxLib_Init() < 0) return -1;
// 描画可能画像を作成する 画像サイズ1024x1024
handle = MakeScreen(1024, 1024, FALSE);
// 作成した画像を描画対象にする
SetDrawScreen(handle);
// MakeScreenの画面に赤色で矩形塗りつぶしを行う 描画範囲(0,0)-(511,275)
DrawBox(0, 0, 512, 276, GetColor(255, 0, 0), TRUE);
// MakeScreenの画面に白色で矩形塗りつぶしを行う 描画範囲(0,276)-(511,511)
DrawBox(0, 276, 512, 512, GetColor(255, 255, 255), TRUE);
// 描画対象を表画面にする
SetDrawScreen(DX_SCREEN_FRONT);
// 縮小描画を行う 表画面(16,32)-(174,96)に対し、MakeScreenの画像(0,276) x幅218px y幅88pxを転送
DrawRectExtendGraph(16, 32, 174, 96, 0, 276, 218, 88, handle, FALSE);
// MakeScreen で作成したグラフィックハンドルの削除
DeleteGraph(handle);
// キー入力待ち
WaitKey();
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
DrawRectExtendGraphで白色の箇所をコピーしたつもりが、なぜか赤色部分までコピーされてしまいます。
また、上記プログラムのMakeScreen(1024, 1024, FALSE);をMakeScreen(512, 512, FALSE);に変更すると赤色部分はコピーされません。
他、DrawRectExtendGraphの表画面への転送先座標(16,32)を、(16,31)や(16,33)に変更すると赤色部分はコピーされません。
発生する条件が良く分からない為、対処に困っております。
何卒、よろしくお願い申し上げます。