トップページ > 過去ログ > 記事閲覧
画面右端に隙間が
名前:ryu 日時: 2011/05/09 16:18

SystemParametersInfoで取得した画面サイズを SetGraphModeに指定し画面をフルサイズで作成。 フルサイズの画像を呼び出し表示したのですが 画面の右端に2ドットくらいの隙間ができました。 この場合SetGraphModeで+2幅足して 作るのが良いのでしょうか? 私の環境では1030x768で上手くいったのですが 他の人のPCでエラーが起きないか心配なので 教えてください・・ #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { int ScreenX,ScreenY; RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0 ); ScreenX = rect.right - rect.left; // 横 ScreenY = rect.bottom - rect.top; // 縦 ChangeWindowMode( TRUE ); SetGraphMode(ScreenX, ScreenY, 32); SetUseBackBufferTransColorFlag( TRUE ); //Dx初期化 if ( DxLib_Init( ) == -1 ) return -1; int CharaImage = LoadGraph( "sample.png" ); SetDrawValidAlphaChannelGraphCreateFlag( TRUE ); int ABufferScreen = MakeScreen( ScreenX, ScreenY ); // α付のバッファを作成 SetDrawValidAlphaChannelGraphCreateFlag( FALSE ); SetTransColor( 0, 0, 255); //透明色設定 SetDrawScreen( ABufferScreen ); //描画する画面を設定 FillGraph( ABufferScreen, 255, 0, 0, 0 ); //指定色で塗りつぶし // BlendParam と画像のα値が乗算されますので、255を指定すれば // 画像のα値がそのまま描画先に書き込まれます SetDrawBlendMode( DX_BLENDMODE_SRCCOLOR, 255 ) ; DrawModiGraph( 0 , 0 , ScreenX , 0 , ScreenX , ScreenY , 0 , ScreenY,CharaImage, TRUE ); // α付のバッファにレンダリング // ブレンドモードを元に戻す SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ) ; //ソフトイメージ用画面を作成 int UpdataScreen = MakeARGB8ColorSoftImage( ScreenX, ScreenY ); int CaptureScreen = MakeARGB8ColorSoftImage( ScreenX, ScreenY ); GetDrawScreenSoftImage( 0, 0, ScreenX, ScreenY, CaptureScreen ); // レンダリング結果をソフトイメージに取得 FillSoftImage( UpdataScreen, 0, 0, 0, 0 ) ; //黒で塗りつぶし BltSoftImage( 0, 0, ScreenX, ScreenY, CaptureScreen, 0, 0, UpdataScreen ); // バッファを使って加工した画像を出力 //更新 UpdateLayerdWindowForSoftImage( UpdataScreen ); WaitKey( ); DxLib_End( ); return 0; }

Page: 1 |

Re: 画面右端に隙間が ( No.1 )
名前:いっち 日時:2011/05/09 21:24

おそらく描画の問題ではなく、ウィンドウ位置の問題ではないでしょうか? SetWindowPosition で微調整なさってみてください。
Re: 画面右端に隙間が ( No.2 )
名前:ryu(解決) 日時:2011/05/09 22:00

たしかになおりました、ありがとうございます!

Page: 1 |