我正在尝试使用图形对象的MeasureString()方法来测量字符串的像素宽度。
我正在使用CreateGraphics()创建一个新的图形对象,并使用它来调用MeasureString()。有一次,我完成了,我在上面调用dispose()。
我的问题是,调用MeasureString()是否实际导致渲染发生。我没有使用任何绘图方法(例如DrawString等)。
-DEV
答案 0 :(得分:2)
public SizeF MeasureString(String text, Font font, SizeF layoutArea, StringFormat stringFormat)
{
if (text == null || text.Length == 0)
{
return new SizeF(0, 0);
}
if (font == null)
{
throw new ArgumentNullException("font");
}
GPRECTF grfLayout = new GPRECTF(0, 0, layoutArea.Width, layoutArea.Height);
GPRECTF grfboundingBox = new GPRECTF();
int a, b;
int status = SafeNativeMethods.Gdip.GdipMeasureString(new HandleRef(this, this.NativeGraphics), text, text.Length, new HandleRef(font, font.NativeFont),
ref grfLayout,
new HandleRef(stringFormat, (stringFormat == null) ? IntPtr.Zero : stringFormat.nativeFormat),
ref grfboundingBox, out a, out b);
if (status != SafeNativeMethods.Gdip.Ok)
{
throw SafeNativeMethods.Gdip.StatusException(status);
}
return grfboundingBox.SizeF;
}
所以不,没有渲染。即使是documentation也这么说:
使用指定的Font绘制时测量指定的字符串。
答案 1 :(得分:1)
正如方法名称所示,它没有。