在網上看了不少例子,都不能居中,都有或多或少的問題this
本身根據網友的代碼改編入下:spa
先確隨便寫一個標題的內容:.net
string titleMsg =「Winfrom Title」
獲取對Graphics對象的引用:code
Graphics g = this.CreateGraphics();
根據Graphics對象來計算標題的開始居中位置:對象
Double startingPoint = (this.Width / 2) - (g.MeasureString(titleMsg, this.Font).Width / 2);
計算一個空字符所佔像素長度:blog
Double widthOfASpace = g.MeasureString(" ", this.Font).Width;
定義一個空字符串來用做爲標題以前作佔位:字符串
String tmp = " ";
定義一個初始佔位像素:get
Double tmpWidth = 0;
循環遍歷,將startingPoint以前的像素都用空字符代替:string
while ((tmpWidth + widthOfASpace) < startingPoint) { tmp += " "; tmpWidth += widthOfASpace; }
最後將標題字符跟換:it
this.Text = tmp + titleMsg;
完整代碼以下:
1 private void SetTitleCenter() 2 { 3 string titleMsg = "Winfrom Title"; 4 Graphics g = this.CreateGraphics(); 5 Double startingPoint = (this.Width / 2) - (g.MeasureString(titleMsg, this.Font).Width / 2); 6 Double widthOfASpace = g.MeasureString(" ", this.Font).Width; 7 String tmp = " "; 8 Double tmpWidth = 0; 9 10 while ((tmpWidth + widthOfASpace) < startingPoint) 11 { 12 tmp += " "; 13 tmpWidth += widthOfASpace; 14 } 15 this.Text = tmp + titleMsg; 16 }
將上面SetTitleCenter()方法寫在窗體構造方法中的InitializeComponent()方法以後便可
參考地址:
https://blog.csdn.net/weixin_44022374/article/details/105459718