(VB.net) Как использовать файл .ttf (шрифт) для личной коллекции шрифтов - PullRequest
0 голосов
/ 10 февраля 2012

Хорошо, поэтому я пытаюсь использовать коллекцию privatefont для моей программы, чтобы добавить в нее немного уникальности.Шрифт, который я использую, по умолчанию не установлен на компьютерах.Название шрифта - youmurdererbb_reg.У меня есть файл шрифта в папке ресурсов, и файл в формате .ttf.Вот что у меня есть:

Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Text
Imports System.Text

Dim pc As New PrivateFontCollection


    Private Sub Main_Menu_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Try
            pc.AddFontFile(YouMurderer)
        Catch ex As Exception
            Trace.WriteLine(ex.ToString)
        End Try

    End Sub


    Private Sub Main_Menu_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

    Dim Fnt As Font = New Font(pc.Families(0), 80, FontStyle.Regular)
    e.Graphics.DrawString("This is the text that is being drawn", Fnt, Brushes.Black, 10, 10)

    End Sub

Теперь, когда я объявил коллекцию приватных шрифтов, я попробовал разные вещи, чтобы заставить ее работать:Я выбираю, он просто показывает всю форму с большим красным «X» (как «ErrorImage» в картинках) (у меня есть изображение, установленное на фоне форм в качестве дополнительной информации).если я не пытаюсь преобразовать его:

Dim YouMurderer As String = My.Resources.youmurdererbb_reg

Тогда возникает ошибка:

Value of type '1-dimensional array of Byte' cannot be converted to 'String'.

Мне нужна помощь с этим в .NET (Framework 4)!Вся программа написана на VB.net, а не на C #, C ++ или JAVA.

1 Ответ

0 голосов
/ 10 февраля 2012

Я создал библиотеку, которая делает это легко, под названием BizArk .Вы можете установить его, используя NuGet , или, если вы просто хотите использовать источник в качестве ссылки, вы можете получить код здесь (Current / BizArkCore / Util / FontUtil.cs).Обратите внимание, что код написан на C #, но кода не так много, поэтому, надеюсь, вы сможете следовать ему.

Если вы используете класс FontUtil как есть, вы можете использовать его для создания любого шрифта, дажевстроенные шрифты.Вот как это использовать ...

Private Sub Main_Menu_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    Try
        FontUtil.RegisterFont(My.Resources.youmurdererbb_reg)
    Catch ex As Exception
        Trace.WriteLine(ex.ToString)
    End Try

End Sub

Private Sub Main_Menu_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

    Dim Fnt As Font = FontUtil.Create("YouMurderer", 80, FontStyle.Regular)
    e.Graphics.DrawString("This is the text that is being drawn", Fnt, Brushes.Black, 10, 10)
    Fnt.Dispose()

End Sub
...