首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将System.Drawing.Font转换为PdfSharp.Drawing.XFont

将System.Drawing.Font转换为PdfSharp.Drawing.XFont
EN

Stack Overflow用户
提问于 2020-08-14 00:01:15
回答 1查看 496关注 0票数 0

如何正确创建与Font.Size对应大小的XFont对象?我有XGraphics,System.Drawing.Font与FontFamily "Tahoma“和大小6。当我创建XFont的例子,我得到了非常大的文本在渲染的PDF页面。我假设Font.Size iz点单位,并且XFont需要用"emSize“创建。

代码语言:javascript
复制
    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时:

代码语言:javascript
复制
XFont xFont = new XFont(new Font(formatObject.Font.FontFamily.Name, formatObject.Font.Size, formatObject.Font.Style));

我得到异常“字体必须使用GraphicsUnit.World”。当我试图传递GraphincUnit.World时,我得到了非常大的文本。参数"formatObject“是从另一个程序集传递过来的,它不是我的代码。"formatObject“中的字体对象保存单元类型"Point”。

EN

回答 1

Stack Overflow用户

发布于 2020-08-14 18:04:22

我设法获得了正确的字体大小,如代码示例所示:

代码语言:javascript
复制
        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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63398956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档