【发布时间】:2017-04-07 16:06:15
【问题描述】:
有没有办法将外部字体定义为新的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
【问题讨论】:
-
您确定“Roboto Light”是字体名称而不仅仅是文件名称吗?试试“./Fonts/#Roboto”。
-
@mm8 我确定。我一直在项目的其他部分使用它。我使用字体的安装程序检查了它
-
哦,System.Drawing.FontFamily 不理解包 URI。
-
@mm8 是的,我不能使用
System.Windows.Media.FontFamily,因为我需要System.Drawing.FontFamily -
@Downvoter 介意解释吗?