#c_sharp #winforms
Я указываю шрифт для кнопки a_Simpler Если это шрифт не добавлен в библиотеку шрифтов: То она пишет обычным шрифтом Microsoft Sans Serif Можно ли сохранить шрифт a_Simpler вместе с .exe? или как решить проблему?
Ответы
Ответ 1
Компиляция из ответов на en.SO: Трюк состоит в том, чтобы положить шрифт в глобальную PrivateFontCollection, и использовать его оттуда. (Саму коллекцию, судя по всему, нужно положить в главный класс приложения или другое общедоступное место.) Если он уже там у вас есть, и коллекция определена как PrivateFontCollection pfc, используйте такую конструкцию: b.Font = new Font(pfc.Families[0], <тут указываете размер>); Ещё нужно установить в свойствах UI-элемента UseCompatibleTextRendering в true. Вместо индекса 0 может понадобиться другой, если вы кладёте в коллекцию несколько шрифтов. Как можно добавить шрифт в коллекцию? Для этого используются методы AddFontFile и AddMemoryFont. Если вы таскаете шрифт в файле, то всё совсем просто: pfc.AddFontFile(<тут путь к вашему файлу со шрифтом>);. Если вы решили положить шрифт в ресурсы, понадобится более сложный код. var fontdata = Properties.Resources.Simpler; // Simpler - имя, которое вы дали шрифту var length = fontdata.Length; // в ресурсах var unsafeData = Marshal.AllocCoTaskMem(length); Marshal.Copy(fontdata, 0, unsafeData, length); pfc.AddMemoryFont(unsafeData, length); Marshal.FreeCoTaskMem(unsafeData); Источники: [1], [2], [3], [4].
Комментариев нет:
Отправить комментарий