none
有關Region的問題 RRS feed

  • 問題

  • 我在GraphicsPath內加入3圓形,編號1~3。

    並將此GraphicPath加至Region中,以測試滑鼠指標所指到的是編號幾的圓。並MessageBox顯示出其編號。

    System.Drawing.Region region;  //Global

    public void DrawBumpDate(Graphics g)

    {

          int CircleSize = 10;         //pixel
          Rectangle rect = new Rectangle();
          System.Drawing.Drawing2D.GraphicsPath _path = new System.Drawing.Drawing2D.GraphicsPath();
          _path.Reset();
          for(int i = 0; i < 3; i++)
          {
            rect.X = 100*(i+1) - CircleSize / 2;
            rect.Y =  100*(i+1) - CircleSize / 2;
            rect.Width = CircleSize;
            rect.Height = CircleSize;
            g.FillEllipse(Brushes.Green, rect);
            _path.AddEllipse(rect);
          }

         region = new System.Drawing.Region(_path);

    }

    而在MouseMove中加入

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
          if (region != null && region.IsVisible(e.X, e.Y))
          {
            請問在這邊我該怎麼得知,所指到的是哪一個圓? 當然用回圈可以解決,但我要畫的圓有數千個,用loop似乎效率不夠好。還能前輩有其它方式可以達到此目標

            //string str = String.Format("This Circle is Number : {0}",???);
            //MessageBox.Show("Inside the bump");
          }
        }

          謝謝

                          Howard

     

     

     

    2006年9月21日 上午 10:05

解答

  • 如果你的圓形位置都是固定的話
    直接用滑鼠位置去換算會落在哪個圓形上會比較快

    2006年9月22日 上午 04:15

所有回覆

  • 如果你的圓形位置都是固定的話
    直接用滑鼠位置去換算會落在哪個圓形上會比較快

    2006年9月22日 上午 04:15
  • 請問您是指,直接寫在OnMouseMove裡嗎?

    如果是這樣子的話,如果我的圓很多(超過二千個),那每次mouse一移動,就要計算,會不會造成效率的問題?

    還是有其它比較好方式,來達到這個需求?

    2006年9月25日 上午 05:47
  • 這要看你的需求,如果不需要即時地回應的話
    就可以在timer中來處理判斷滑鼠位置

    2006年9月26日 下午 02:40