如何将 System.Drawing.font 转换为 System.Windows.Media.Fonts 或 TypeFace?

发布于 2024-08-02 16:49:54 字数 232 浏览 1 评论 0原文

如何将 System.Drawing.Font 转换为 System.Windows.Media.FontsTypeFace

或者如何从 System.Drawing.Font 实例生成 System.Windows.Media.FontsTypeFace 实例?

How can I convert a System.Drawing.Font to a System.Windows.Media.Fonts or TypeFace?

Or how can I generate an instance of System.Windows.Media.Fonts or TypeFace from an instance of System.Drawing.Font?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云仙小弟 2024-08-09 16:49:54

你无法实例化 Media.Fonts ,但我认为你可以获得一个 Media.FontFamily 这就是我实现它的方式。

using System.Drawing;
using Media = System.Windows.Media;

 Font font = new Font(new System.Drawing.FontFamily("Comic Sans MS"), 10);
            //option 1
            Media.FontFamily mfont = new Media.FontFamily(font.Name);
            //option 2 does the same thing
            Media.FontFamilyConverter conv = new Media.FontFamilyConverter();
            Media.FontFamily mfont1 = conv.ConvertFromString(font.Name) as Media.FontFamily;
            //option 3
            Media.FontFamily mfont2 = Media.Fonts.SystemFontFamilies.Where(x => x.Source == font.Name).FirstOrDefault();

you cant instantiate Media.Fonts , but I think you can get a Media.FontFamily this is how I achieved it.

using System.Drawing;
using Media = System.Windows.Media;

 Font font = new Font(new System.Drawing.FontFamily("Comic Sans MS"), 10);
            //option 1
            Media.FontFamily mfont = new Media.FontFamily(font.Name);
            //option 2 does the same thing
            Media.FontFamilyConverter conv = new Media.FontFamilyConverter();
            Media.FontFamily mfont1 = conv.ConvertFromString(font.Name) as Media.FontFamily;
            //option 3
            Media.FontFamily mfont2 = Media.Fonts.SystemFontFamilies.Where(x => x.Source == font.Name).FirstOrDefault();
无风消散 2024-08-09 16:49:54

我正在使用下面的代码

private static Typeface NewTypeFaceFromFont(System.Drawing.Font f)
{
    Typeface typeface = null;

    FontFamily ff = new FontFamily(f.Name);


    if (typeface == null)
    {
        typeface = new Typeface(ff, (f.Style == System.Drawing.FontStyle.Italic ? FontStyles.Italic : FontStyles.Normal),
                         (f.Style == System.Drawing.FontStyle.Bold ? FontWeights.Bold : FontWeights.Normal),
                                    FontStretches.Normal);
    }
    if (typeface == null)
    {
        typeface = new Typeface(new FontFamily("Arial"),
                                        FontStyles.Italic,
                                        FontWeights.Normal,
                                        FontStretches.Normal);            
    }
    return typeface;

}

I'm using below codes

private static Typeface NewTypeFaceFromFont(System.Drawing.Font f)
{
    Typeface typeface = null;

    FontFamily ff = new FontFamily(f.Name);


    if (typeface == null)
    {
        typeface = new Typeface(ff, (f.Style == System.Drawing.FontStyle.Italic ? FontStyles.Italic : FontStyles.Normal),
                         (f.Style == System.Drawing.FontStyle.Bold ? FontWeights.Bold : FontWeights.Normal),
                                    FontStretches.Normal);
    }
    if (typeface == null)
    {
        typeface = new Typeface(new FontFamily("Arial"),
                                        FontStyles.Italic,
                                        FontWeights.Normal,
                                        FontStretches.Normal);            
    }
    return typeface;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文