2013-08-12 69 views
0

所以我試圖找到一種方法在兩個按鈕之間繪製一條直線,我點擊了它們(有多個源 - >目的線可以繪製)。我目前正在使用此代碼。在兩個按鈕組件之間畫一條線

private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     using (Graphics g = e.Graphics) 
     { 
      foreach (Connection c in connections) 
      { 
       Point pt1 = c.source.Location; 
       Point pt2 = c.destination.Location; 

       using (Pen p = new Pen(Brushes.Black)) 
       { 
        g.DrawLine(p, pt1, pt2); 
       } 

      } 
     } 
    } 

現在這個工作,但顯然它是在我的窗體畫布上繪製,它隱藏在我的窗體上的所有按鈕後面。這裏是佈局的樣子:

http://puu.sh/401hD.png

反正是有,我可以解決這個問題?

謝謝。

+0

哇,畫面花費多長時間?他們都是按鈕嗎?也許你應該看看不同的方法,在畫布上繪製內容並以這種方式處理交互? – Belogix

+0

這需要2秒鐘的時間,我想先處理它,然後我會改變它。 –

+0

好的,你已經遇到的主要問題是,畫布上的任何內容都會出現在你的所有控件後面,所以在你考慮另一種方法之前,你花了多少時間來解決這個問題。 – Belogix

回答

0

每個按鈕都知道它在父級上的相對位置,並且每個按鈕都可以處理它的Paint事件。如果你將線條存儲在線性方程式中,並通過兩個點(x2-x1)(y-y1)=(y2-y1)(x-x1),你可以迭代他們在按鈕Paint處理程序並計算線是否跨越按鈕的邊緣。每個按鈕都應該有自己的相對於其父座標的邊的方程。