トップページ > 記事閲覧
ウィンドウのサイズの指定と描画について
名前:yellow 日時: 2023/02/02 09:37

下記コードでは1920x1080のサイズでSetGraphModeを指定し そこからSetWindowSizeでリサイズ(-300,-300)して GetWindowSizeを取得しWindowSizeぶんのBOXを描画するものです。 ここでウィンドウサイズが1620x780になっていますが その画面にボックスを描画します DrawBox(0, 0, WindowSizeX,WindowSizeY, GetColor(128,128,128), true); するとウィンドウ全体が灰色に塗りつぶされるはずですが 結果的に塗りつぶしされません。 みたところウィンドウサイズとDrawBoxのサイズが一致していないようなのですが このような場合はどのように対処すればよいでしょうか #include "DxLib.h" #include <math.h> int WindowSizeX,WindowSizeY; // WinMain int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; // ライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; SetGraphMode( 1920,1080, 32 ) ; SetWindowSize(1920-300,1080-300); GetWindowSize(&WindowSizeX,&WindowSizeY); // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // ESCキーが押されるか、ウインドウが閉じられるまでループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { // 画面をクリア ClearDrawScreen() ; DrawBox(0, 0, WindowSizeX,WindowSizeY, GetColor(128,128,128), true); DrawFormatString(50,100, GetColor(255,255,255), "WindowSize X %d Y %d",WindowSizeX,WindowSizeY); DrawFormatString(50,130, GetColor(255,255,255), "DrawBox(0,0,%d,%d)",WindowSizeX,WindowSizeY); // 裏画面の内容を表画面に反映 ScreenFlip() ; } // ライブラリの後始末 DxLib_End() ; // ソフト終了 return 0 ; }
メンテ

Page: 1 |

Re: ウィンドウのサイズの指定と描画について ( No.1 )
名前:管理人 日時:2023/02/03 00:31

DXライブラリはデフォルトでは SetGraphMode で指定した画面をウィンドウのサイズに合わせて 拡大縮小しますので、SetWindowSize( 1620, 780 ); を実行した場合は 1920x1080 の画面が 1620x780 に縮小されて表示されるため、ウィンドウ全体が塗りつぶされることはありません ( 1920x1080 の画面中の (0,0)-(1620,780) の範囲が塗りつぶされた画面が 1620x780 のサイズに縮小されて表示されます ) ウィンドウのサイズに合わせて拡大縮小を行わないようにする場合は、DxLib_Init() の呼び出し前に SetWindowSizeChangeEnableFlag( FALSE, FALSE ) ; という記述を追加してください m(_ _)m
メンテ
Re: ウィンドウのサイズの指定と描画について ( No.2 )
名前:yellow(解決) 日時:2023/02/03 04:28

なるほど、そのような設定方法があったのですか 描画時に自動的に縮小されるのは想定していませんでしたが SetWindowSizeChangeEnableFlag を指定すると意図どおりに描画されるようになり謎の挙動が理解できました。 解決とさせていただきます。ご教示いただきありがとうございましたm(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存