Как я могу связать шрифт с моим приложением.net winforms?
Я хотел бы использовать нестандартный шрифт для моего приложения Winnet.net 3.0.
Этот шрифт может быть установлен на некоторых компьютерах моего пользователя, но на некоторых других он явно отсутствует.
Как я могу отправить шрифт с моей программой? Нужно ли устанавливать шрифт? Если да, будет ли проблема с отсутствием прав администратора?
3 ответа
Вам нужно будет использовать установщик, чтобы зарегистрировать шрифт на целевом компьютере. Но, возможно, вам не придется, GDI+ поддерживает частные шрифты.
Вот статья в блоге, которую я написал, которая показывает способ встраивания шрифтов в качестве ресурсов в ваше приложение (нет необходимости в импорте DLL:).
Встраивание шрифтов в ваше приложение.Net
Вот класс, который я создаю, где происходит вся магия. Статья в блоге содержит инструкции и пример ее использования.
using System.Drawing;
using System.Drawing.Text;
using System.Runtime.InteropServices;
namespace EmbeddedFontsExample.Fonts
{
public class ResFonts
{
private static PrivateFontCollection sFonts;
static ResFonts()
{
sFonts = new PrivateFontCollection();
// The order the fonts are added to the collection
// should be the same as the order they are added
// to the ResFontFamily enum.
AddFont(MyFonts.Consolas);
}
private static void AddFont(byte[] font)
{
var buffer = Marshal.AllocCoTaskMem(font.Length);
Marshal.Copy(font, 0, buffer, font.Length);
sFonts.AddMemoryFont(buffer, font.Length);
}
public static Font Create(
ResFontFamily family,
float emSize,
FontStyle style = FontStyle.Regular,
GraphicsUnit unit = GraphicsUnit.Pixel)
{
var fam = sFonts.Families[(int)family];
return new Font(fam, emSize, style, unit);
}
}
public enum ResFontFamily
{
/// <summary>Consolas</summary>
Consolas = 0
}
}
На этой странице подробно объясняется, как встроить шрифт в проект winforms.