2011-10-28 32 views
0

我的問題是:我有2個面板(panel1,panel2)其中panel1.Size = new Size(200, 200);Panel2.Size = new Size(600, 600);其中兩個面板都在一個CustomControl中可以拖動並更改Possition(szbControl1,szbControl2)。如何設置另一個控件按比例位置

我的問題是,如何設置szbControl2.Location正確(按比例)的基礎上szbControl1.Location其中szbControl1panel1szbControl2panel2,就像如果我在底部移動szbControl1szbControl2應該在底部。 到目前爲止,我想這:

private void sizeAbleCTR2_LocationChanged(object sender, EventArgs e) 
     { 
      int smallX = (sizeAbleCTR2.Location.X * panel1.Size.Width)/100; 
      int smallY = (sizeAbleCTR2.Location.Y * panel1.Size.Height)/100; 

      int largeX = (smallX * panel2.Width)/100; 
      int largeY = (smallY * panel2.Height)/100; 

      sizeAbleCTR1.Location = new Point(largeX,largeY); 
     } 

喜歡用百分比,但它不工作。

回答

3

您提供的代碼沒有考慮到szbControls的大小。 (位置/大小的差異)的比例應該相等。

private void sizeAbleCTR2_LocationChanged(object sender, EventArgs e) 
{ 
    float srcHeightDiff = panel2.Height - sizeAbleCTR2.Height; 
    float dstHeightDiff = panel1.Height - sizeAbleCTR1.Height; 

    int locY = (int)(dstHeightDiff * (sizeAbleCTR2.Location.Y/srcHeightDiff)); 

    float srcWidthDiff = panel2.Width - sizeAbleCTR2.Width; 
    float dstWidthDiff = panel1.Width - sizeAbleCTR1.Width; 

    int locX = (float)(dstWidthDiff * (sizeAbleCTR2.Location.X/srcWidthDiff)); 

    sizeAbleCTR1.Location = new Point(locX, locY); 
} 
+0

是的人它做的伎倆,非常感謝 – Burimi

相關問題