winform 窗体中顶部标题居中显示
程序员文章站
2022-11-01 19:54:42
在网上看了很多例子,都不能居中,都有或多或少的问题 自己根据网友的代码改编入下: 先确随便写一个标题的内容: string titleMsg =“Winfrom Title” 获取对Graphics对象的引用: Graphics g = this.CreateGraphics(); 根据Graphi ......
在网上看了很多例子,都不能居中,都有或多或少的问题
自己根据网友的代码改编入下:
先确随便写一个标题的内容:
string titlemsg =“winfrom title”
获取对graphics对象的引用:
graphics g = this.creategraphics();
根据graphics对象来计算标题的开始居中位置:
double startingpoint = (this.width / 2) - (g.measurestring(titlemsg, this.font).width / 2);
计算一个空字符所占像素长度:
double widthofaspace = g.measurestring(" ", this.font).width;
定义一个空字符串来用作为标题之前做占位:
string tmp = " ";
定义一个初始占位像素:
double tmpwidth = 0;
循环遍历,将startingpoint之前的像素都用空字符代替:
while ((tmpwidth + widthofaspace) < startingpoint) { tmp += " "; tmpwidth += widthofaspace; }
最后将标题字符跟换:
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()方法之后即可
参考地址:
推荐阅读