ページ 11

DXライブラリでマウスカーソルを使ってのボタン判定

Posted: 2018年1月16日(火) 11:35
by yun
DXlibでボタンをつくりたいのですが、マウスカーソルをある範囲の座標に合わせたときの判定方法がわかりません。
if文を用いて作ったボタンの範囲の座標にあわせたときに判定させたいのですがどのようにif文をつくればいいでしょうか。
マウスの位置の取得やクリックの入力などはできています。

Re: DXライブラリでマウスカーソルを使ってのボタン判定

Posted: 2018年1月16日(火) 22:09
by Dixq (管理人)
ゲームプログラミングの館のs.3章が参考になると思います。

s.3章 Androidのようなボタンの作り方(C++)
http://dixq.net/g/

ただなぜマウスの一の取得ができていて、ボタンとの当たり判定が計算できないのかわかりません。
具体的に今できているコードはどうなっていて、どこで分からないのでしょうか。

Re: DXライブラリでマウスカーソルを使ってのボタン判定

Posted: 2018年1月21日(日) 12:42
by Yakiniku

コード:

int MouseX , MouseY ;
GetMousePoint( &MouseX , &MouseY ) ; // マウスの位置を取得

int sx,sy,gx,gy;
sx=100;
sy=100;
gx=200;
gy=200;

if(sx<MouseX && sy<MouseY && gx>MouseY && gy>MouseY)
{
      // ここに処理を書く
}
sx,sy,gx,gyは画像サイズ(GetGraphSizeで取得)、拡大率などから適時調整してください。
多分、ボタンですとDrawRotaGraphなど中心を描画座標に指定する関数を使って拡大率を指定した方が良い気がします。

Re: DXライブラリでマウスカーソルを使ってのボタン判定

Posted: 2018年1月21日(日) 12:59
by Yakiniku

コード:

int MouseX , MouseY ;
int sx,sy,gx,gy;
int drawX,drawY,sizeX,sizeY;
int btnGraph=LoadGraph("ボタン画像パス");
GetMousePoint( &MouseX , &MouseY ) ; // マウスの位置を取得
GetGraphSize(btnGraph,&sizeX,&sizeY);
drawX=100;
drawY=100;

sx=drawX-sizeX/2;
sy=drawY-sizeY/2;
gx=drawX+sizeX/2;
gy=drawY+sizeY/2;
 
if(sx<MouseX && sy<MouseY && gx>MouseY && gy>MouseY)
{
      // ここに処理を書く
}

DrawRotaGraph(drawX,drawY,1.0,0,btnGraph,TRUE,FALSE);
追記しました。
また、GetGraphSizeの幅もしくは高さの値が0だと2で割った時に止まるので注意しましょう。