MeasureText无法正常工作

时间:2011-11-07 20:42:54

标签: c# gdi+

我有一个Bitmap对象,我想在其上绘制一些文本。该文本应该针对给定点对齐。这就是我现在这样做的方式:

newBitmap = Image.FromFile(bg) as Bitmap;
Graphics g = Graphics.FromImage(newBitmap);
var cvt = new FontConverter();

String temp = "ddddd"

ftemp = cvt.ConvertFromString("Times New Roman; 12pt") as Font;
SizeF p2Size = TextRenderer.MeasureText(temp, ftemp);
p2Nick = new PointF(PosX - p2Size.Width, PosY);

g.DrawString(temp, ftemp, new SolidBrush(myColor), p2Nick);

问题是我输入的文字越多,距离右侧的距离就越大。

enter image description here

也许有人可以指出我的错误。当然,我简化了很多,但这几乎就是发生了什么。

2 个答案:

答案 0 :(得分:0)

使用相同的库测量字符串时,您可能会有更好的运气:

e.g:

SizeF p2Size = g.MeasureString(temp, ftemp);

此外,系统的DPI文本设置会影响结果,您可以考虑到这一点:Graphics.DpiX。

最后,我认为有一个设置TextFormatFlags.NoPadding可以提供帮助,但如果您切换到StringFormat,则会使用Graphics.MeasureString()对象。

答案 1 :(得分:0)

啊,啊,我喜欢它...我看了几个小时的代码,找不到我的错误。刚出去几分钟后回来意识到我在计算新位置后做了一些倾斜,但我没有将新分辨率调整到计算点。

我真的很抱歉提出这个问题 - .-