トップページ > 過去ログ > 記事閲覧
BltSoftImage使用時の表示座標のズレについて
名前:やっと 日時: 2013/03/22 03:23

言葉での説明が難しいのでソースと実行画面の写真を貼らせて頂きます。 写真:http://www.dotup.org/uploda/www.dotup.org4062538.jpg LoadSoftImageで読み込んだ"./win.png"(黒色で四角の画像)をスクリーン座標(0,0)に表示させる意図なのですが、実行すると写真のようにY座標が27ドットずれます。 また表示位置には問題のないX座標も、GetMousePoint()で取得したX座標数値が5ドットずれています。写真ではスクリーンX座標0を指しているのですが-5となっております。 この5と27のズレはどうもウィンドウの枠のサイズとタイトルバーのサイズの分というのは理解できたのですが… 意図した動作を実現するのに何か方法がありましたらお教え頂けると助かります。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lpCmdLine,int) { SetUseBackBufferTransColorFlag(true); if ( SetGraphMode( 640, 480, 32 ) != DX_CHANGESCREEN_OK ) return 1; if ( ChangeWindowMode( true ) != DX_CHANGESCREEN_OK ) return 1; if ( DxLib_Init() ) return 1; if ( SetDrawScreen( DX_SCREEN_BACK ) ) return 1; int gHandle = LoadSoftImage( "./win.png" ); SetTransColor(255,10,10); SetBackgroundColor( 255, 10, 10 ); int SofH = MakeARGB8ColorSoftImage( 640, 480 ); int CapH = MakeXRGB8ColorSoftImage( 640, 480 ); //SetWindowStyleMode(2);//2にするとX座標の問題はなし、ただしY座標が27ずれる SetWindowPos( GetMainWindowHandle(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE ); while( ClearDrawScreen(),ProcessMessage() == 0 ) { int x=0, y=0; GetMousePoint( &x, &y ); DrawFormatString( 0, 0, GetColor(255,255,255), "x%d,y%d", x, y ); FillSoftImage( SofH, 0, 0, 0, 0 ); BltSoftImage( 0, 0, 640, 480, gHandle, 0, 0, SofH ); GetDrawScreenSoftImage( 0, 0, 640, 480, CapH ); BltSoftImageWithTransColor( 0, 0, 640, 480, CapH, 0, 0, SofH, 255, 10, 10, 0 ); UpdateLayerdWindowForSoftImage( SofH ); } DxLib_End(); return 0; }

Page: 1 |

Re: BltSoftImage使用時の表示座標のズレについて ( No.1 )
名前:管理人 日時:2013/03/24 21:27

ご報告ありがとうございます 修正版をアップしましたので、よろしければお使いください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) あと、SetWindowStyleMode( 2 ) ; をお使いください ( それ以外のモードでは見えていないだけで枠やタスクバーが存在するので )
Re: BltSoftImage使用時の表示座標のズレについて ( No.2 )
名前:やと(解決) 日時:2013/03/24 22:43

修正版で、意図したとおり問題なく動作しています。 年度末でお忙しい時期にもかかわらず早速の修正ありがとうございました!

Page: 1 |