c# - 在 WPF 中,如何在代码隐藏中引用资源库中的字体?

标签 c# wpf fonts pack-uri

我有一个应用程序使用单独的资源库程序集(但不是没有代码的纯资源程序集),我想在库中包含自定义字体。

如果我将其 .otf 文件作为资源添加到执行程序集的项目(而不是资源库项目),使用以下代码将属性设置为 Build Action = 'Resource' 和 Copy to Output = 'Do Not Copy':

FontFamily font = new FontFamily(new Uri("pack://application:,,,/"), 
                      "./Resources/#CustomFont")); // Resources is a subfolder

但是,当我尝试将字体添加到资源库项目时,字体并未加载。我尝试使用以下代码来加载它(还要注意:我对包 URI 没有太多经验):

FontFamily font = new FontFamily(new Uri("pack://application:,,,/MyLibrary"),
                      "./Resources/#CustomFont")); 
                      // there is a Resources subfolder in my library as well
                      // not sure about whether I need the .

该库确实适用于其他资源,例如图像。

我还尝试了一系列 URI 的其他排列但没有成功(它也没有抛出异常,只是以默认字体显示,不确定这是否是一个单独的问题)。

我从 Packaging Fonts with Applications 开始工作在 MSDN 上,它有一个创建字体资源库的示例,但没有使用代码隐藏的示例(为此我被迫使用代码隐藏)。

关于我需要做什么的任何想法?我偏离轨道了吗?

最佳答案

我让它在我的应用程序中工作(从代码隐藏中的另一个程序集加载字体)。对于这样的字体 URI:

pack://application:,,,/MyAssembly.Name;component/Resources/Fonts/#Swis721 Md BT

我让它工作的方式(如果我没记错的话,经过痛苦的反复试验)是:

new FontFamily(
    new Uri("pack://application:,,,/MyAssembly.Name;component/Resources/Fonts/"),
    "./#Swis721 Md BT"
)

希望对您有所帮助。

关于c# - 在 WPF 中,如何在代码隐藏中引用资源库中的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522704/

相关文章:

c# - 使用 C# 将文本框添加到网格

php imagettftext从内存加载

c# - 如何快速将两个字节添加到字节数组中?

c# - 在过滤掉某些属性的同时序列化 JSON.NET JObject

c# - 将 XAML 中的 ImageSource 设置为 PackIcon 类型?

c# - WPF 应用程序的内容调整大小事件

java - ApachePoi 在 OpenJdk 1.8.0_121 上因字体错误而失败 在 Oracle Jre 上没问题

css - Firefox/Mac 的 Helvetica Neue 基线渲染问题

c# - 在构建了所有子类之后,如何在父类(super class)中执行一些代码?

c# - 通过 NHibernate 在不加载对象的情况下更新一对多关系