Eas*_*yBB 0 c# wpf font-family
好吧,所以我一直在尝试的一切都没有正确加载我的字体,我已将它们添加到 .csproj 文件中,该文件是通过切换完成的,copy to output directory所以这就是它的样子
<Resource Include="Resources\Fonts\SourceSansPro-Black.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-BlackItalic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-Bold.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-BoldItalic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-ExtraLight.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-ExtraLightItalic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-Italic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-Light.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-LightItalic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-Regular.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-SemiBold.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Resources\Fonts\SourceSansPro-SemiBoldItalic.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
Run Code Online (Sandbox Code Playgroud)
然后我在我的里面添加了引用ui-dictionary,看起来像
<FontFamily x:Key="Black" >pack://application:,,,/Resources/Fonts/#SourceSansPro-Black</FontFamily>
<FontFamily x:Key="BlackItalic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-BlackItalic</FontFamily>
<FontFamily x:Key="Bold" >pack://application:,,,/Resources/Fonts/#SourceSansPro-Bold</FontFamily>
<FontFamily x:Key="BoldItalic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-BoldItalic</FontFamily>
<FontFamily x:Key="ExtraLight" >pack://application:,,,/Resources/Fonts/#SourceSansPro-ExtraLight</FontFamily>
<FontFamily x:Key="ExtraLightItalic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-ExtraLightItalic</FontFamily>
<FontFamily x:Key="Italic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-Italic</FontFamily>
<FontFamily x:Key="Light" >pack://application:,,,/Resources/Fonts/SourceSansPro-Light.ttf</FontFamily>
<FontFamily x:Key="LightItalic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-LightItalic</FontFamily>
<FontFamily x:Key="Regular" >pack://application:,,,/Resources/Fonts/#SourceSansPro-Regular</FontFamily>
<FontFamily x:Key="SemiBold" >pack://application:,,,/Resources/Fonts/#SourceSansPro-SemiBold</FontFamily>
<FontFamily x:Key="SemiBoldItalic" >pack://application:,,,/Resources/Fonts/#SourceSansPro-SemiBoldItalic</FontFamily>
Run Code Online (Sandbox Code Playgroud)
但每次我尝试使用它时,字体都不会加载。所以我在uri中尝试了不同的方法
<!-- First Method -->
<FontFamily x:Key="Light" >pack://application:,,,/Resources/Fonts/SourceSansPro-Light.ttf#SourceSansPro-Light</FontFamily>
<!-- Second Method -->
<FontFamily x:Key="Light" >pack://application:,,,/Resources/Fonts/#SourceSansPro-Light</FontFamily>
<!-- Third Method -->
<FontFamily x:Key="Light" >/Resources/Fonts/#SourceSansPro-Light</FontFamily>
<!-- Third Method -->
<FontFamily x:Key="Light" >/Resources/Fonts/#SourceSansPro-Light</FontFamily>
<!-- Fourth Method -->
<FontFamily x:Key="Light" >/Resources/Fonts/SourceSansPro-Light.ttf#SourceSansPro-Light</FontFamily>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
小智 6
将字体作为资源嵌入到 WPF 中非常简单。但是,您需要注意一些问题。
以下是我在示例应用程序中遵循的分步过程:
Resources将/文件夹添加Fonts到我的项目中
将 Source Sans Pro文件拖到文件夹.ttf中Fonts
Visual Studio 自动将其设置Build Action为Resource
注意:如果它们被用作资源,则不需要将它们复制到输出目录
Fonts.xaml ResourceDictionary使用以下代码创建了一个
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<FontFamily x:Key="Regular">pack://application:,,,/WpfApp4;component/Resources/Fonts/#Source Sans Pro</FontFamily>
<FontFamily x:Key="Black">pack://application:,,,/WpfApp4;component/Resources/Fonts/#Source Sans Pro Black</FontFamily>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
然后我将资源合并Fonts.xaml到我的App.xaml文件中。
<Application x:Class="WpfApp4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Fonts.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)
您遇到的第一个问题是 Pack Uri 格式不正确。
pack://application:,,,/ YourAppNamespace;component /Resources/Fonts/#字体系列名称
您遇到的第二个问题是字体系列名称不正确
字体系列名称通常与 .ttf 文件名不同!
为了获得正确的姓氏,我强烈建议使用dp4 Font Viewer。
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
4718 次 |
| 最近记录: |