2017-08-17 36 views
1

我爲公墓創建一個小地圖,我想放大和縮小地圖。所以我的想法是調整面板上所有按鈕的內容。 我的代碼是在這裏:放大面板c#

foreach (Control btn in this.panel3.Controls) 
     { 
      if ((btn) is Button) 
      { 
       btn.Width += 10; 
       btn.Height += 10; 
      } 
     } 

是否有任何其他方式做到這一點?我不滿意,因爲它看起來不像放大或更像放大的方式。預先感謝。

+1

嘗試使用'ScaleTransform' –

+0

您是否需要使用WinForms?縮放/旋轉表單對於WPF效果更好。 – NineBerry

+0

@NineBerry我需要使用WinForms。 –

回答

1

僅適用於您的代碼分開放大按鈕。你可能需要的是彈力整個區域的按鈕。像這樣的東西(我沒有測試):

foreach (Button btn in panel3.Controls.Where(c => c is Button).Cast<Button>()) 
{ 
    const double zoom = 1.1; 

    //increase position 
    btn.Left = Convert.ToInt32(btn.Left * zoom); 
    btn.Top = Convert.ToInt32(btn.Top * zoom); 

    //increase size 
    btn.Width = Convert.ToInt32(btn.Width * zoom); 
    btn.Height = Convert.ToInt32(btn.Height * zoom); 
} 
+1

此外,這不會放大字體大小,您可能必須手動執行此操作。 – florien

0

您可以使用PanelScale方法來放大和縮小面板的內容。

private void buttonZoomIn_Click(object sender, EventArgs e) 
{ 
    cemetaryPanel.Scale(new SizeF(1.1f, 1.1f)); 
} 

private void buttonZoomOut_Click(object sender, EventArgs e) 
{ 
    cemetaryPanel.Scale(new SizeF(0.9f, 0.9f)); 
}