完成以下代码后,“result1”和“result2”变量(字符串的测量宽度)的值是相同的,尽管“font1”是常规的而“font2”是粗体。有趣的是,这个错误出现在字体“Times New Roman”和“Arial”中。例如,对于字体“Calibri”,返回值是正确的,变量“result2”的值大于变量“result1”的值。为什么会这样?
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
{
graphics.PageUnit = System.Drawing.GraphicsUnit.Pixel;
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
System.Drawing.Font font1 = new System.Drawing.Font("Arial", 10.0f, System.Drawing.FontStyle.Regular);
System.Drawing.Font font2 = new System.Drawing.Font("Arial", 10.0f, System.Drawing.FontStyle.Bold);
float result1 = graphics.MeasureString("WWW", font1, int.MaxValue, System.Drawing.StringFormat.GenericTypographic).Width;
float result2 = graphics.MeasureString("WWW", font2, int.MaxValue, System.Drawing.StringFormat.GenericTypographic).Width;
}
答案 0 :(得分:3)
实际上在OnPaint()方法中绘制它,你会明白为什么:
答案 1 :(得分:2)
我只是尝试了不同的字符串,宽度确实发生了变化。我认为恰好“WWW”具有相同的长度,有/没有大胆的风格。只需在编辑器中尝试它,你就会看到它的大小相同。