问题描述
如何正确创建与Font.Size对应大小的XFont对象? 我有XGraphics,System.Drawing.Font和FontFamily“ Tahoma”,尺寸为6。 当像示例一样创建XFont时,我在渲染的PDF页面上得到了很大的文本。 我假设使用Font.Size iz Points单位,并且需要使用“ emSize”创建XFont。
void PDFCreateObjectOnLabel(XGraphics graphics,ObjectBase formatObject,string objectText)
{
XStringFormat objFormat = new XStringFormat();
objFormat.Alignment = XStringalignment.Center;
XFont xFont = new XFont(formatObject.Font.FontFamily.Name,formatObject.Font.Size);
graphics.DrawString(objectText,xFont,someBrush,someRect,objFormat);
}
当我尝试这样创建XFont时:
XFont xFont = new XFont(new Font(formatObject.Font.FontFamily.Name,formatObject.Font.Size,formatObject.Font.Style));
我得到异常“字体必须使用GraphicsUnit.World。” 当我尝试传递GraphincUnit.World时,我得到了很大的文本。 参数“ formatObject”是从另一个组件传递的,这不是我的代码。 “ formatObject”中的字体对象保存单位类型为“ Point”。
解决方法
我设法获得了正确的字体大小,如代码示例所示:
double emSize = formatObject.Font.Size * 0.35277777777778;//1 point (computer) = 0.35277777777778 millimeter [mm]
XFont xFont = new XFont(new Font(formatObject.Font.FontFamily.Name,(float)emSize,formatObject.Font.Style,GraphicsUnit.World));