C# PDF快速设置字体样式

C# PDF快速设置字体样式,c#,pdfsharp,C#,Pdfsharp,我有一个字体对话框,让用户选择字体名称,字体大小,也可能是字体样式 但是这个代码不起作用 XFont myFont = new XFont(txtP.Font.Name, txtP.Font.Size, txtP.Font.Style); 错误为:错误2参数3:无法从转换 “System.Drawing.FontStyle”到“PdfSharp.Drawing.XFontStyle”/ 错误1与的最佳重载方法匹配 'PdfSharp.Drawing.XFont.XFont(字符串,双精度, P

我有一个字体对话框,让用户选择字体名称,字体大小,也可能是字体样式

但是这个代码不起作用

XFont myFont = new XFont(txtP.Font.Name, txtP.Font.Size, txtP.Font.Style);
错误为:错误2参数3:无法从转换 “System.Drawing.FontStyle”到“PdfSharp.Drawing.XFontStyle”/ 错误1与的最佳重载方法匹配 'PdfSharp.Drawing.XFont.XFont(字符串,双精度, PdfSharp.Drawing.XFontStyle)“”具有一些无效参数


这方面有解决办法吗?我真的希望让用户选择字体样式,而不仅仅是名称和大小。

XFontStyle
是由PdfSharp定义的枚举。正如错误所说,无法将System.Drawing.FontStyle“转换为”PdfSharp.Drawing.XFontStyle“

选项:

  • 让用户直接从xFontStyle值中选择
  • 在FontStyle和XFontStyle之间创建一个转换器方法
  • 第二个方法有点复杂,因为您必须将第一个枚举中的值映射到第二个枚举,正如您所看到的,它们并不完全相同,但可以这样做。

    我通过

    XFont myFont = new XFont(txtP.Font.Name, txtP.Font.Size, (PdfSharp.Drawing.XFontStyle)fontStyle);
    

    MigraDoc源代码的一个片段:
    public enum XFontStyle//与System.Drawing.FontStyle
    的值相同。BoldItalic只是粗体和斜体的组合。因为XFontStyle和FontStyle使用相同的值,所以转换将起作用。