我在pictruebox内有一个圆,圆是通过Graphics.DrawEllipse 画出来的,那么我怎么判断我点击的坐标是在圆内,因为这种画法是在一个矩形框内画得,在矩形框内好判断,在圆内不知道怎么判断,哪位高手知道?
或者用其他的画圆法,希望赐教!

解决方案 »

  1.   

    首先圆的大小应该是已知的,比如
    private Rectangle m_CircleRegion = new Rectangle(10, 10, 60, 60);然后画圆的时候使用的应该是这个region
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawEllipse(Pens.Black, m_CircleRegion);
            }最后我们需要通过picturebox1的mouseClick方法来得到按下的点并确定该点是否在圆中,通过比较该点到圆心的距离
    private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
            {
                Point clickPoint = e.Location;
                Point circleCenter = new Point(m_CircleRegion.X + m_CircleRegion.Width / 2, m_CircleRegion.Y + m_CircleRegion.Height / 2);
                double r = m_CircleRegion.Width / 2;
                double distance = Math.Sqrt(Math.Pow((clickPoint.X - circleCenter.X), 2) + Math.Pow((clickPoint.Y - circleCenter.Y), 2));
                if (distance <= r)
                    MessageBox.Show("This point is in the circle");
                else
                    MessageBox.Show("This point is out of the circle");
            }