ÕâÆªÎÄÕÂÖ÷Òª½éÉÜÁËC#ʵÏÖ´°ÌåÖеĸ÷¸ö¿Ø¼þͬ±È×Ô¶¯·ÅËõ´óС,ʵÏÖ·½Ê½Ö÷ÒªÊÇÀûÓÃpanel¿Ø¼þΪÖ÷Ìâ,¶ÔÓÚÿ¸ö¿Ø¼þµÄ´óСλÖúÍ×ÖÌåÕ⼸¸öÊôÐÔ½øÐмǼ,È»ºó¸ù¾Ý´°Ìå¸Ä±äµÄ´óСͬʱ·ÅËõ,ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ
ʵÏÖ·½Ê½Ö÷ÒªÊÇÀûÓÃpanel¿Ø¼þΪÖ÷Ì⣬¶ÔÓÚÿ¸ö¿Ø¼þµÄ´óСλÖúÍ×ÖÌåÕ⼸¸öÊôÐÔ½øÐмǼ£¬È»ºó¸ù¾Ý´°Ìå¸Ä±äµÄ´óСͬʱ·ÅËõ£¬
C#ʵÏÖ´°ÌåÖеĸ÷¸ö¿Ø¼þͬ±È×Ô¶¯·ÅËõ´óС
¡£¼òÒª²½ÖèÈçÏ£º
1¡¢´´½¨C#´°Ìå³ÌÐòÏîÄ¿¡£
2¡¢Panel·ÅÖõ½´°Ìå¡£
3¡¢ÉèÖÃÊôÐÔdockΪfill¡£
4¡¢×¢ÒâMinnumSize²»ÄÜÉèÖÃΪ0£¬ ¸Ä³É´óÓÚ0¶¼ÐС£
´úÂëÈçÏÂ:
public partial class FrmDemo : Form
{
double dFrmWidth;
double dFrmHeight;
double dZoomHorizon;
double dZoomVerticality;
Dictionary
protected void GetAllInitiateContrlInfo(Control CrlContainer)
{
if (CrlContainer.Parent == this)
{
dFrmWidth = Convert.ToDouble(CrlContainer.Width);
dFrmHeight = Convert.ToDouble(CrlContainer.Height);
}
foreach (Control item in CrlContainer.Controls)
{
if (item.Name.Trim() != "")
dicControlsAttribute.Add(item.Name, (item.Left + item.Width / 2) + "," + (item.Top + item.Height / 2)
+ "," + item.Width + "," + item.Height + "," + item.Font.Size);
if ((item as UserControl) == null && item.Controls.Count > 0)
GetAllInitiateContrlInfo(item);
}
}
private void ChangeControlsInitiate(Control CrlContainer)
{
dZoomHorizon = (Convert.ToDouble(CrlContainer.Width) / dFrmWidth);
dZoomVerticality = (Convert.ToDouble(CrlContainer.Height) / dFrmHeight);
}
private void ChangeCurrentControlAttr(Control CrlContainer)
{
double[] dPosition = new double[5];
foreach (Control item in CrlContainer.Controls)
{
if (item.Name.Trim() != "")
{
if ((item as UserControl) == null && item.Controls.Count > 0)
ChangeCurrentControlAttr(item);
string[] strs = dicControlsAttribute[item.Name].Split(¡®,¡®);
for (int j = 0; j < 5; j++)
{
dPosition[j] = Convert.ToDouble(strs[j]);
}
double itemWidth = dPosition[2] * dZoomHorizon;
double itemHeight = dPosition[3] * dZoomVerticality;
item.Left = Convert.ToInt32(dPosition[0] * dZoomHorizon - itemWidth / 2);
item.Top = Convert.ToInt32(dPosition[1] * dZoomVerticality - itemHeight / 2);
item.Width = Convert.ToInt32(itemWidth);
item.Height = Convert.ToInt32(itemHeight);
//item.Font = new Font(item.Font.Name, float.Parse
//((dPosition[4] * Math.Min(dZoomHorizon, dZoomVerticality)).ToString()));
//×ÖÌåÒ²¿ÉÒÔʵÏÖͬ±È·ÅËõ£¬
µçÄÔ×ÊÁÏ
¡¶C#ʵÏÖ´°ÌåÖеĸ÷¸ö¿Ø¼þͬ±È×Ô¶¯·ÅËõ´óС¡·(https://www.unjs.com)¡£}
}
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
if (dicControlsAttribute.Count > 0)
{
ChangeControlsInitiate(this.Controls[0]);
ChangeCurrentControlAttr(this.Controls[0]);
}
}
public FrmDemo()
{
InitializeComponent();
GetAllInitiateContrlInfo(this.Controls[0]);//¹¹Ô캯ÊýÀïÃæµ÷Óü´¿É¡£
}
}
5¡¢Ð§¹û²âÊÔ