スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C# MouseMoveイベントサンプルコード

こんばんは。
やっぱり腹式呼吸ができません。

さて、C#の超簡単なサンプルコードを書いてみました。

FormSample1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace myapp
{
class FormSample1{
public class Form1 : Form
{
private Label label = new Label();

private void InitializeComponent(){
//Form1
this.Size = new Size(300,300);
this.MouseMove += new MouseEventHandler(mouseMove);

//label
label.Text = "start";
label.Location =new Point(150,150);
label.MouseMove += new MouseEventHandler(mouseMove);

this.Load +=new System.EventHandler(this.Form1_Load);
}
public Form1(){
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
this.Controls.Add(this.label);
}
private void mouseMove(object sender, MouseEventArgs e){
//取得した座標をクライアント座標に変換
System.Drawing.Point sp = System.Windows.Forms.Cursor.Position;
System.Drawing.Point cp = this.PointToClient(sp);
int x = cp.X,y = cp.Y;

//位置判定
if(x >150){
label.Text = "→";
}else{
label.Text = "←";
}
this.Text = (x.ToString() +"," + y.ToString());
}
}
static void Main()
{
Application.Run(new Form1());
}
}
}


実行すると





Form上のマウスの位置に応じて矢印が左右に動きます。

マウスカーソルがキャプチャできなかったので代わりにお星さまつけときました。

また、タイトルバーの部分にはForm上のマウスカーソルの座標x,yが表示されています。

それだけのプログラムです。

でもちまちま動く矢印めっちゃかわいい……こう、なんかこねくりまわしたくなるかわいさ……


では、ポイント。

MouseMove


これは、Controlクラスがもっているイベントです。
Formとかボタンの上でマウスカーソルが動いたときに発生します。
ポイントは、ラベルとフォーム両方に同じイベントが関連付けられていることです。
フォームだけでいいんじゃね? って思うかもしれませんが、そうするとラベルの上でだけMouseMoveイベントが発生しません。
あくまで、そのコントロールの上を直接マウスカーソルが動いたときにだけ反応します。

ふたつめ。

System.Drawing.Point sp = System.Windows.Forms.Cursor.Position;
System.Drawing.Point cp = this.PointToClient(sp);
int x = cp.X,y = cp.Y;


マウスイベントが発生したとき、Cursor.Psitionがもらってくるのはウィンドウ画面そのものの座標です。
しかし今回必要なのはマウスがフォームのどこにあるかです。
そこで、画面の座標をフォーム上の座標(クライアント座標)に変換してあげます。

参考:画面座標をクライアント座標(コントロール上の座標)に変換する


以上、超簡単なMouseMoveイベントのサンプルでした。

今度は矢印じゃなくて、右向きのキャラ画像左向きのキャラ画像でやってみたいです。


では、今回はこの辺りで。
関連記事

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
非公開コメント
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。