C#之WinForm界面分辨率問題


  在做上一個C#小工具的時候,當時為了處理界面最大化,分辨率問題,只是簡單的用各種···Panle控價簡單隨意的處理控件的大小位置,字體什么的就隨緣了(貌似有點不負責任啊,嘿嘿~)。

  所以在開始第二個C#小工具的時候,就又想到了這個問題,下面就貼代碼啦↓↓↓

 

public Form1()
{
  InitializeComponent();
  x = this.Width;
  y = this.Height;
  setTag(this);
}
private float x;//定義當前窗體的寬度
private float y;//定義當前窗體的高度
private void setTag(Control cons)
{
  foreach (Control con in cons.Controls)
  {
    con.Tag = con.Width + ";" + con.Height + ";" + con.Left + ";" + con.Top + ";" + con.Font.Size;
    if (con.Controls.Count > 0)
    {
      setTag(con);
    }
  }
}
private void setControls(float newx, float newy, Control cons)
{
  //遍歷窗體中的控件,重新設置控件的值
  foreach (Control con in cons.Controls)
  {
    //獲取控件的Tag屬性值,並分割后存儲字符串數組
    if (con.Tag != null)
    {
      string[] mytag = con.Tag.ToString().Split(new char[] { ';' });
      //根據窗體縮放的比例確定控件的值
      con.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * newx);//寬度
      con.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * newy);//高度
      con.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * newx);//左邊距
      con.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * newy);//頂邊距
      Single currentSize = System.Convert.ToSingle(mytag[4]) * newy;//字體大小
      con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
      if (con.Controls.Count > 0)
      {
        setControls(newx, newy, con);
      }
    }
  }
}

private void Form1_Resize(object sender, EventArgs e)   
{
  float newx = (this.Width) / x;
  float newy = (this.Height) / y;
  setControls(newx, newy, this);
}

 

嗯,這個就到這就結束了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM