|
Как указать ссылку на шрифт в используемую библиотеку
|
|||
---|---|---|---|
#18+
Сейчас реализовано так: new Typeface(new FontFamily(new Uri("pack://application:,,,/Astro;Component/Fonts") Но, как оказалось все корректно отображалось из-за того, что шрифт установлен. Попробовал на другой машине и там уже не работает. Особенность в том, что основная программа использует библиотеку моих контролов. Т.е в основной программе если использовать шрифт, то все работает, а если этот же шрифт попробовать использовать в библиотеки, то не работает. Сам шрифт находится в проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 17:20 |
|
Как указать ссылку на шрифт в используемую библиотеку
|
|||
---|---|---|---|
#18+
Такой код работает: FontFamily ff = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/Fonts/"), "./#Bayern"); Typeface columnHeaderTypeface = new Typeface(ff,FontStyles.Normal,FontWeights.Normal, FontStretches.Normal); Правда, именно в этом шрифте русские буквы остаются почти такими же, как в обычных шрифтах (типа Verdana), но вид латинских букв изменяется просто до неузнаваемости (по сравнению с обычными шрифтами). Здесь файл шрифта Bayern.ttf помещен в папку Fonts библиотеки ResourceLibrary с указанием действие при сборке - Resource, копировать в выходной каталог - Не копировать. Свойству FontFamily.BaseUri (если посмотреть в отладчике) содержит значение pack://application:,,,/ResourceLibrary;component/Fonts/ Uri корневого каталога приложения: pack://application:,,, Uri корневого каталога библиотеки: /ResourceLibrary;component/ Можно еще сделать так: 1) В библиотечном проекте ResourceLibrary создать папку Dictionaries, создать в этой папке папку Dictionaries_Fonts 3) Создать в ней файл Dictionary_Fonts.xaml с таким содержанием: <ResourceDictionary xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml"> <FontFamily x:Key="Bayern">/ResourceLibrary;component/Fonts/#Bayern</FontFamily> </ResourceDictionary> 4) В папку App.xaml основного проекта в раздел <ResourceDictionary.MergedDictionaries> добавить строку: <ResourceDictionary Source="/ResourceLibrary;component/Dictionaries/Dictionaries_Fonts/Dictionary_Fonts.xaml"/> 5) Чтобы сослаться на шрифт, в разметке можно написать: <Label Name="label1" FontSize="40" FontFamily="{StaticResource Bayern}"> This is an embedded font</Label> 6) Чтобы программно изменить шрифт, нужно написать такой обработчик для кнопки: label1.FontFamily = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/Fonts/"), "./#Bayern"); Здесь BaseUri имеет значение pack://application:,,,/ResourceLibrary;component/Fonts/ 7) или альтернативный, тоже рабочий вариант: label1.FontFamily = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/"), "./Fonts/#Bayern"); Здесь BaseUri имеет значение pack://application:,,,/ResourceLibrary;component/Fonts/ 8) Все это, если шрифт находится в сторонней библиотеке. А если шрифт находится в корневой папке основного приложения (и оформлен как ресурс), то работает такая разметка: <Label Name="tst" FontSize="40" FontFamily="./#Bayern" >This is an embedded font</Label> ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 07:00 |
|
|
start [/forum/topic.php?fid=21&msg=38953861&tid=1440347]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 497ms |
0 / 0 |