我画的_radius = 50
像素的圆圈形式的中心:单击形状的WinForm
g.FillEllipse(Brushes.Red, this.ClientRectangle.Width/2 - _radius/2, this.ClientRectangle.Height/2 - _radius/2, _radius, _radius);
现在我要检查,如果用户在点击的形式。
if (e.Button == MouseButtons.Left)
{
int w = this.ClientRectangle.Width;
int h = this.ClientRectangle.Height;
double distance = Math.Sqrt((w/2 - e.Location.X)^2 + (h/2 - e.Location.Y)^2);
....
if (distance <_radius)
return true;
else
return false;
}
现在我结束了错误的值。例如,如果我点击圆圈的边缘,有时会得到〜10或NaN的距离。我在这里做错了什么?
^运算符不会做你认为它所做的事情,请使用Math.Pow()。一般不这样做,你会喜欢GraphicsPath。用它的IsVisible()方法绘制并进行命中测试。 –