2017-08-17 56 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)); 
}