Использование собственного шрифта с AntiAlias

Привет всем, я пытаюсь загрузить свой собственный шрифт TTF, а также иметь его AntiAlias, чтобы он не выглядел все неровно и все.

Код для загрузки пользовательского шрифта следующий (находится здесь):

Dim pfc As New PrivateFontCollection()
pfc.AddFontFile("C:\Path To\PALETX3.ttf")
label1.Font = New Font(pfc.Families(0), 16, FontStyle.Regular)

Код для сглаживания шрифтов следующий (находится здесь):

    Dim fontFamily As New FontFamily("Times New Roman")
    Dim font As New Font( _
       fontFamily, _
       32, _
       FontStyle.Regular, _
       GraphicsUnit.Pixel)
    Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
    Dim string1 As String = "SingleBitPerPixel" 
    Dim string2 As String = "AntiAlias"

    e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel
    e.Graphics.DrawString(string1, font, solidBrush, New PointF(10, 10))

    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias
    e.Graphics.DrawString(string2, font, solidBrush, New PointF(10, 60))

Тем не менее, я не могу объединить эти коды выше... Я пытался:

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    Dim font As New PrivateFontCollection()
    font.AddFontFile("C:\Path To\PALETX3.ttf")

    Dim fontFamily As New Font(font.Families(0))
    Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
    Dim string1 As String = "SingleBitPerPixel"
    Dim string2 As String = "AntiAlias"

    e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel
    e.Graphics.DrawString(string1, fontFamily, solidBrush, New PointF(10, 10))

    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias
    e.Graphics.DrawString(string2, fontFamily, solidBrush, New PointF(10, 60))
End Sub

Но ошибка:

Не удалось разрешить перегрузку, потому что ни один доступный "New" не принимает это количество аргументов.

Это в строке Dim fontFamily As New Font(font.Families(0)).

Любая помощь, чтобы объединить эти 2 вместе было бы здорово!

1 ответ

Решение

Новый шрифт имеет более десятка перегрузок для нового, и вы случайно выбрали тот, которого нет в списке. Минимум при указании аргументов:

Dim myFont As New Font(familyName As String, emSize as integer) 

так что попробуйте это:

Dim myFont As New Font(font.Families(0), 16) 
Другие вопросы по тегам