Использование собственного шрифта с 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)