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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yun

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

#1

投稿記事 by yun » 6年前

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

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

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

#2

投稿記事 by Dixq (管理人) » 6年前

ゲームプログラミングの館のs.3章が参考になると思います。

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

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

Yakiniku
記事: 17
登録日時: 6年前
住所: 神奈川県

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

#3

投稿記事 by Yakiniku » 6年前

コード:

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など中心を描画座標に指定する関数を使って拡大率を指定した方が良い気がします。

Yakiniku
記事: 17
登録日時: 6年前
住所: 神奈川県

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

#4

投稿記事 by Yakiniku » 6年前

コード:

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で割った時に止まるので注意しましょう。

返信

“C言語何でも質問掲示板” へ戻る