如何正确创建与Font.Size对应大小的XFont对象?我有XGraphics,System.Drawing.Font与FontFamily "Tahoma“和大小6。当我创建XFont的例子,我得到了非常大的文本在渲染的PDF页面。我假设Font.Size iz点单位,并且XFont需要用"emSize“创建。
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”。
发布于 2020-08-14 18:04:22
我设法获得了正确的字体大小,如代码示例所示:
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));https://stackoverflow.com/questions/63398956
复制相似问题