欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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()方法之后即可

 

参考地址: