c# – 从Graphics.DrawString()中心文本输出

我使用.NETCF(Windows Mobile)图形类和DrawString()方法来渲染一个字符到屏幕。

问题是,我似乎不能得到它正确集中。无论我为字符串渲染的位置的Y坐标设置什么,它总是出来低于那个,并且文本大小越大,Y偏移越大。

例如,在文本大小12处,偏移大约为4,但是在32处,偏移大约为10。

我想让字符垂直占据被绘制的矩形的大部分,并水平居中。这是我的基本代码。这是引用它被绘制的用户控件。

Graphics g = this.CreateGraphics();

float padx = ((float)this.Size.Width) * (0.05F);
float pady = ((float)this.Size.Height) * (0.05F);

float width = ((float)this.Size.Width) - 2 * padx;
float height = ((float)this.Size.Height) - 2 * pady;

float emSize = height;

g.DrawString(letter, new Font(FontFamily.GenericSansSerif, emSize, FontStyle.Regular),
            new SolidBrush(Color.Black), padx, pady);

是的,我知道有标签控制,我可以改用并设置中心,但实际上确实需要手动使用Graphics类。

我想为StringFormat对象添加另一个投票。
你可以使用这个简单的指定“中心,中心”,文本将被绘制在一个或多个提供的点的中心:

StringFormat format = new StringFormat();
format.LineAlignment = StringAlignment.Center;
format.Alignment = StringAlignment.Center;

但是在CF中有一个问题。如果对两个值使用中心,那么它会关闭TextWrapping。不知道为什么会这样,它似乎是一个与CF的错误。

http://stackoverflow.com/questions/7991/center-text-output-from-graphics-drawstring

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 从Graphics.DrawString()中心文本输出