現在のマウス座標を表示するプログラムを作ってみた。
FormのSizeは300x300。
FormにPictureBoxを貼り付け、DockプロパティをFillに。
FormにTimerを貼り付け、EnabledプロパティをTrueに。Intervalプロパティに16を設定。
Formをダブルクリックして、LoadイベントForm1_Loadを作成。
TimerをダブルクリックしてTickイベントtimer1_Tickを作成。
Form1.csは次の通り。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Yanesdk.Draw;
using Yanesdk.Input;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Win32Window window;
GlTexture texture;
Yanesdk.Draw.Font font;
MouseInput mouse;
private void Form1_Load(object sender, EventArgs e)
{
window = new Win32Window(pictureBox1.Handle);
texture = new GlTexture();
font = new Yanesdk.Draw.Font();
font.Load(0, 16);
// このフォームを指定してMouseInputクラスを作成
mouse = new MouseInput(this);
}
private void timer1_Tick(object sender, EventArgs e)
{
Screen2DGl screen = window.Screen;
screen.Select();
screen.SetClearColor(255, 255, 255);
screen.Clear();
// マウスの座標とボタンを取得
int mx, my;
mouse.GetPos(out mx, out my);
bool left, middle, right;
left = mouse.IsPress(MouseInput.Button.Left);
middle = mouse.IsPress(MouseInput.Button.Middle);
right = mouse.IsPress(MouseInput.Button.Right);
// 取得した座標にラインを描画
screen.SetColor(255, 0, 0);
screen.DrawLine(mx - 20, my, mx + 20, my);
screen.DrawLine(mx, my - 20, mx, my + 20);
// 座標とボタン状態をテキストで表示
String text;
text = mx + " " + my + " " + " " + left + " " + middle + " " + right;
texture.SetSurface(font.DrawBlended(text));
screen.SetColor(0, 255, 0);
screen.BlendSrcAlpha();
screen.Blt(texture, 0, 0);
screen.Update();
}
}
}