Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 15:29   #1
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию Не меняется шрифт

Я сохраняю .ttf файл шрифта в ресурсах, динамически загружаю его в PrivateFontFamily и пытаюсь применить к лейблу. Оно работает странно. Шрифт применяется, только если он уже был установлен в системе.
Что я не так делаю? Проект прикреплен.

Код:
ResourceManager ^r = gcnew ResourceManager(this->GetType());
array<Byte> ^b = (array<Byte>^)r->GetObject("Crysta");
IntPtr p = IntPtr(new Byte[b->Length]);
Marshal::Copy(b,0,p,b->Length);
pfc = gcnew PrivateFontCollection();
pfc->AddMemoryFont(p,b->Length);
label1->Font = gcnew Drawing::Font(pfc->Families[0],14,FontStyle::Italic);
Вложения
Тип файла: rar FontTest.rar (1.35 Мб, 8 просмотров)
Accepted

Последний раз редактировалось Хохол; 17.03.2011 в 16:06.
Хохол вне форума Ответить с цитированием
Старый 17.03.2011, 22:15   #2
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию

Здесь говорят, что нужно провернуть такую штуку:
Код:
    [DllImport("gdi32.dll")]
    private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts);
Как это перевести на C++/CLI?
Accepted
Хохол вне форума Ответить с цитированием
Старый 17.03.2011, 23:02   #3
Хохол
Пользователь
 
Аватар для Хохол
 
Регистрация: 20.11.2009
Сообщений: 37
По умолчанию

Перевел, все заработало.
Код:
        [DllImport("Gdi32.dll")]
    static IntPtr AddFontMemResourceEx(IntPtr pbFont, int cbFont, int pdv, int *pcFonts);

    private: PrivateFontCollection ^pfc;
    public:
        Form1(void)
        {
            InitializeComponent();

            ResourceManager ^r = gcnew ResourceManager(this->GetType());
            array<Byte> ^b = (array<Byte>^)r->GetObject("Crysta");
            IntPtr p = IntPtr(new Byte[b->Length]);
            Marshal::Copy(b,0,p,b->Length);
            pfc = gcnew PrivateFontCollection();
            pfc->AddMemoryFont(p,b->Length);
            int cnt = 1;

            AddFontMemResourceEx(p,b->Length,0,&cnt);
            label1->Font = gcnew Drawing::Font(pfc->Families[0],14,FontStyle::Italic);
        }
Accepted
Хохол вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не меняется шрифт Гошик Microsoft Office Word 4 07.01.2020 17:58
Не меняется useragent Кинельски Работа с сетью в Delphi 0 16.02.2011 23:08
Не меняется поле Edit garyanikin Общие вопросы Delphi 4 15.01.2010 20:56
Не меняется формат данных DimEx Microsoft Office Excel 4 06.03.2008 15:17