|
取滑鼠之間的距離 |
說明:
點滑鼠左鍵取得第一點座標、點滑鼠右鍵取得第二點座標,
最後按上Button兩點間距離,取得距離
像素(pixel) = 解析度(dpi) * 尺寸(inch)
1英吋等於2.54公分、所先要先了解解析度(dpi)
解析度DPI:例如72(像素/英吋)代表每一英吋距離中有72個點
例如解析度(dpi)是72
寬615/72畫素=8.5416英吋
高380/72畫素=5.2777英吋
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button2_Click(object sender, EventArgs e)
{
double Dis;
double Const = 2.54;
string C = textBox1.Text;
char c = char.Parse(",");
string[] A = C.Split(c);
string D = textBox2.Text;
char d = char.Parse(",");
string[] B = D.Split(d);
int First_Px = int.Parse(A[0]);
int First_Py = int.Parse(A[1]);
int Second_Px = int.Parse(B[0]);
int Second_Py = int.Parse(B[1]);
float dx, dy;
Graphics g = this.CreateGraphics();
try
{
dx = g.DpiX;
dy = g.DpiY;
}
finally
{
g.Dispose();
}
Dis = (Get_Distance(First_Px,
First_Py, Second_Px, Second_Py)/dx) * Const;
textBox3.Text = "距離為" + Dis;
}
private double Get_Distance(int a, int b, int c, int d)
{
double Dis;
Dis = Math.Pow(a - c, 2) + Math.Pow(b - d, 2);
return Math.Sqrt(Dis);
//return
Math.Pow(Dis, 0.5);
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
textBox1.Text = e.X + "," + e.Y ;
}
else if (e.Button == MouseButtons.Right)
{
textBox2.Text = e.X + "," + e.Y ;
}
}
}
留言