System.Drawing.FontFamily不接受基于Uri的Font

时间:2017-04-07 05:12:03

标签: c# wpf fonts

有没有办法将外部字体定义为新的System.Drawing.FontFamily?我尝试使用此代码:

 FontFamily robotoLight = new FontFamily(new Uri("pack://application:,,,/"), 
                                         "./Fonts/#Roboto Light");

并显示此错误:

  

无法从System.Uri转换为string

我意识到我一直在使用不同的引用,而接受Uri的引用是System.Windows.Media.FontFamily,所以它不起作用。

我研究过并发现定义自定义字体是使用PrivateFontCollection.AddFontFile,但它使用字体的绝对路径,如here所示。

我的字体目前位于项目内的fonts文件夹中,并且构建为包含在.exe文件中,所以绝对路径对我来说是不行的。

我需要使用System.Drawing而不是System.Windows.Media,因为我要创建自定义MessageBox

1 个答案:

答案 0 :(得分:1)

System.Drawing.FontFamily无法理解包URI。有关如何使用System.Drawing.FontFamily类的嵌入字体的示例,请参阅以下问题:

How to quickly and easily embed fonts in winforms app in C#