1

嘿,我正在尝试加载我的自定义 ttf 字体,并且还拥有 AntiAlias,所以它看起来并不完全是锯齿状的。

加载自定义字体的代码如下(在此处找到):

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

对字体执行 Antialias 的代码是这样的(在此处找到):

    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

但是一个错误:

重载解析失败,因为没有可访问的“新”接受此数量的参数。

那是在Dim fontFamily As New Font(font.Families(0))行上。

将这两个合并在一起的任何帮助都会很棒!

4

1 回答 1

0

新字体有十几个新的重载,而您碰巧选择了一个不在列表中的字体。指定 args 时的最小值是:

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

所以试试这个:

Dim myFont As New Font(font.Families(0), 16) 
于 2013-11-08T16:29:07.210 回答