2013-03-08 84 views
1

我有一個PictureBox,其圖片作爲應用程序的背景,使所有Anchors都設置好,因此可以使用該窗體調整大小。在這個PictureBox上,我創建了許多其他的東西,現在只有矩形。我在一些X和Y座標上創建它們,這很好。添加圖片以顯示我正在嘗試做的事情。創建的矩形實際上是小淡藍色方塊。 enter image description here如何在PictureBox調整大小時使矩形移動

但是,當我調整形式,例如我最大化,矩形停留在同一座標,這當然AR其他地方的時刻(包括圖像中的一部分,以節省空間):enter image description here 我的問題是 - 在調整大小的過程中,如何使矩形「粘」到與原來位置相同的位置?注意 - 他們必須稍後移動,如每2秒左右一次,所以它不能完全靜止。

編輯: 這裏是一些代碼創建矩形

 private void button1_Click(object sender, EventArgs e) 
    { 
     spawn = "aircraft"; 
     pictureBox1.Invalidate(); 
    } 
private void pictureBox1_Paint(object sender, PaintEventArgs e) 
    { 
     switch (spawn) 
     { 
      case "aircraft": 
       Point[] points = new Point[2]; 
       Point bod = new Point(750, 280); 
       points[0] = bod;  
       aircraft letadlo = new aircraft(605, 180, "KLM886", 180, e.Graphics); 
       aircrafts[0] = letadlo; 
       letadlo.points = points; 
       break; 
       ... 

     public aircraft(int x, int y, string csign, int spd, Graphics g) 
    { 
     Pen p = new Pen(Color.Turquoise, 2); 
     Rectangle r = new Rectangle(x, y, 5, 5); 
     g.DrawRectangle(p, r); 
     p.Dispose(); 
+0

掛鉤到調整大小事件,並重新計算每次調整大小觸發?也複製粘貼「設置」矩形位置的代碼。它的重要性在於看你相關的設置 – squelos 2013-03-08 23:32:45

+0

位置是用絕對座標值設置的。將在一秒鐘內添加一些代碼。 – 2013-03-08 23:33:34

+0

但絕對是什麼?絕對的窗口還是屏幕?有很多繪畫方法。 – squelos 2013-03-08 23:36:48

回答

3

一個選項可能是重新繪製與PictureBox更改大小成比例的新座標中的矩形。 例如:

oldX, oldY // old coordinates of the rectangle should be saved 
oldPictureBoxWidth, oldPictureBoxHeight // should be saved too 

//and on the PictureBox Paint event You have the new: 
newPictureBoxWidth and newPictureBoxHeight 

//the new coordinates of rectangle: (resize ratio is in brackets) 
newX = oldX * (newPictureBoxWidth/oldPictureBoxWidth) 
newY = oldY * (newPictureBoxHeight/oldPictureBoxHeight) 
+0

其實這在我的情況下會比建議的百分比更有用。非常感謝! – 2013-03-08 23:46:24

1

我認爲你有你的X從頂部和底部的距離和Y之間計算%,如果表單重新調整大小隻需使用你的%並再次繪製你的矩形!

用於離:

X = 100的寬度200,從而100是1/2,因此50%因此,如果改變大小的形式只是計算新的大小和(新尺寸* 50)/ 100

希望能幫助你。

相關問題