Использование пользовательских шрифтов из библиотеки классов .net framework - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы использовать пользовательский шрифт, загруженный из библиотеки классов, поэтому я поместил файлы шрифтов в папку Resource библиотеки классов.

и у меня есть этот метод для получения шрифтов:

private static FontFamily GetFontFromFile(MyFontWeightEnum style)
{
      var fontList = new PrivateFontCollection();
      fontList.AddFontFile(@"Resources\Roboto-Black.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Bold.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Italic.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Light.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Medium.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Regular.ttf");
      fontList.AddFontFile(@"Resources\Roboto-Thin.ttf");

      switch (style)
      {
            case MyFontWeightEnum.Black:
                    return fontList.Families[0];
            case MyFontWeightEnum.Bold:
                    return fontList.Families[1];
            case MyFontWeightEnum.Light:
                    return fontList.Families[2];
            case MyFontWeightEnum.Medium:
                    return fontList.Families[3];
            case MyFontWeightEnum.Regular:
                    return fontList.Families[4];
            case MyFontWeightEnum.Italic:
                    return fontList.Families[5];
            case MyFontWeightEnum.Thin:
            default:
                    return fontList.Families[6];
      }
}

и я использую это так в публичном методе, чтобы вернуть шрифт, подобный этому:

public static Font GetRobotoFont(MyFontWeightEnum style, MyFontSizeEnum fontSize)
{
    return new Font(GetFontFromFile(style), fontSize.ToFloat());
}

, поэтому эти два метода существуют внутри библиотеки классов, поэтому я ссылаюсь на библиотеку классов напроект Winforms, и я использую метод на метке:

label1.Font = MyCustomFonts.GetRobotoFont(MyFontWeightEnum.Thin, MyFontSizeEnum.Size18);

, когда я запускаю приложение, я получаю: System.IO.FileNotFoundException: 'Файл не найден.'

, поэтому я помещаюфайл шрифтов внутри папки рабочего стола и укажите путь, и он работал нормально без каких-либо проблем.

Я посмотрел в stackoverflow для похожих проблем, и я нашел метод памяти, я попробовал его, но он не сработал, неправильная загрузка шрифтов,

, поэтому вывод заключается в том, что при создании сборки все файлы в папке ресурсов преобразуются в байт [], и поэтому я получаюИсключение не существует.

, поэтому любой может объяснить проблему и помочь решить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...