我畫的_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()方法繪製並進行命中測試。 –