前回は素早いご対応、誠にありがとうございました。
また些細な点ですが、気になる点を2点確認いたしましたので、
ご報告させていただきます。お時間があるときにご確認いただければ幸いです。
【環境】 Windows7 64bit / DXライブラリは3.05a (更新日6/4 22:16)
----------------------------------------
1.関数SetWindowSizeExtendRateで画面を広げたとき、
SetMousePointの移動先座標がGetMousePointと異なる単位になっている。
まず現在の挙動としては、SetWindowSizeExtendRateで画面を2.0倍にしたとき、
SetMousePoint(500,100);を実行すると、GetMousePoint座標(250,50)に
カーソルがジャンプします。
よってSetMousePointでカーソルジャンプ先の座標計算を行う際は、
画面の拡大率に応じて数値を調整する必要があります。それ自体は対処可能なのですが、
問題は、以下のような手順を行うと、想定した場所に移動させられない点です。
【例】
1.SetGraphMode(640,480,32);で画面サイズ640x480にする。
2.SetWindowSizeExtendRate(2.0)でウィンドウを2倍に引き延ばす
3.SetMousePoint(1000,100) を実行(内部的に(500,50)にカーソルを移動させたい)
4.しかし、実際の移動先はGetMousePointで(320,50)の座標になる。
X座標の移動先が画面サイズの横640/2.0 以内に制限されている?
可能でしたら、SetWindowSizeExtendRate使用時の
SetMousePointのカーソル移動先を、GetMousePoint座標と
同じにしていただけると、計算しやすくなって助かります。
【再現ソース】
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// 画面モードを設定
ChangeWindowMode(TRUE) ; // ウィンドウモード
SetGraphMode(640,480,32);// 640x480に設定
SetDrawScreen( DX_SCREEN_BACK ) ;
SetWindowSizeExtendRate(2.0);
if( DxLib_Init() == -1 ){ return -1;} // DXライブラリ初期化処理
// メッセージ処理
int X,Y;
while( ProcessMessage() != -1 )
{
SetMousePoint( 1000 , 100 ); // マウス座標を移動
GetMousePoint( &X , &Y ); // マウス座標を取得
// マウス座標を表示
ClearDrawScreen() ;
DrawFormatString(0,0,GetColor(255,255,255),"X=%d Y=%d", X, Y);
ScreenFlip();
if( CheckHitKey( KEY_INPUT_ESCAPE ) != 0 ){//Escで抜ける
break;
}
}
WaitKey();// キー待ち
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
-----------------------------------------------------
2.行間情報があるフォントだけ、同じY座標でも、やや下にずれて表示される
hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2248
上記の記事で修正された影響だと思うのですが、
行間があるフォントとそうでないフォントを同じY座標で表示した場合、
従来はフォントの上下位置が調整されて表示されていたのに対し、
新しいバージョンではY座標が同じでも見た目が(行間分だけ?)ずれるようです。
挙動としては、これで想定通りでしょうか?
【従来のVer3.05の文字列描画(左からMS ゴシック・Arial Black・メイリオ・MS ゴシック)】
silversecond.com/WolfRPGEditor/tmp/Dxlib_fonttest1_305.jpg
【最新のVer3.05aの文字列描画(左からMS ゴシック・Arial Black・メイリオ・MS ゴシック)】
silversecond.com/WolfRPGEditor/tmp/Dxlib_fonttest2_305a.jpg
Y座標が同じでも、見た目の縦位置がずれて表示されます。
もしこれで仕様でしたら、ずれた分の行間を、フォントハンドルから取得できる関数があると、
Y座標の調整が容易になるので助かります (すでにあるようでしたら申し訳ございません)。
【再現ソース】
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// 画面モードを設定
ChangeWindowMode(TRUE) ; // ウィンドウモード
if( DxLib_Init() == -1 ){ return -1;} // DXライブラリ初期化処理
SetFontSize(48);// 違いが分かるように大きめのフォントで
DrawString(0,0,"テスト",GetColor(255,255,255));
ChangeFont("Arial Black",DX_CHARSET_DEFAULT);
DrawString(150,0,"ABC",GetColor(255,255,255));
ChangeFont("Meiryo UI");
DrawString(270,0,"テスト",GetColor(255,255,255));
ChangeFont("MS ゴシック");
DrawString(370,0,"テスト",GetColor(255,255,255));
WaitKey();// キー待ち
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
-------------
以上です。
お忙しい中の修正、いつも誠にありがとうございます。