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;
}