none
GDI+中文本绘制大小 RRS feed

  • 问题

  • 代码:

    int width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;//获得屏幕的宽度
                        int height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;//获得屏幕的高度
                        Label lbl = new Label();
                        FontFamily family = new FontFamily(System.Drawing.Text.GenericFontFamilies.SansSerif);
                        Font font = new Font(family, 60);
                        lbl.Text = "当前数据库没有此终端编码!";
                        lbl.Width = 1170;
                        lbl.Height = 150;
                        lbl.Font = font;
                        int pointX = (width - lbl.Width) / 2;
                        int pointY = (height - lbl.Height) / 2;
                        lbl.Location = new Point(pointX, pointY);

    //实现的效果描述:这个窗体是我自己实例化的,默认是全屏显示的,在这个窗体上自动添加了一个LABEL,上面绘制了文本,但是,想让这个LABEL在屏幕居中显示

    我的分析:我设置了绘制文本的大小,为60,获得的文本长度为13,理论上讲,lbl.Width的宽度应该设置为:lbl.Text.Length*60,但是,实际上,不行,不能显示所有的文本

                 假如,我设置了lbl.AutoSize=true;后,我还是要知道lbl.Width的值,但是,默认的话,为100;

                 假如,中文的编码一个字符占两个长度,那么,lbl.Width的值应该就为:lbl.Text.Length*2*60,但是,这样计算出的lbl.Location的坐标不是居中显示。

    问题:请问,如果我的屏幕宽高是动态的,但是,文本是固定的,字体大小也是固定的,那么,我该怎么设置lbl.Width的值,使lab都居中显示!

    2011年4月18日 2:49

答案

全部回复