2012-02-10 38 views
0

好吧,所以我正在嘗試爲我的程序使用私人收藏集來爲其添加一點獨特性。我使用的字體默認情況下未安裝在計算機上。字體的名字是youmurdererbb_reg。我有資源文件夾中的字體文件,該文件是.ttf格式。以下是我迄今爲止:(VB.net)如何爲私人字體使用.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 

現在在哪裏聲明的私人字體集,我曾嘗試這些不同的東西,得到它的工作:

Dim YouMurderer As String = Encoding.ASCII.GetString(My.Resources.youmurdererbb_reg) 

Dim YouMurderer As String = Convert.ToString(My.Resources.youmurdererbb_reg) 

Dim YouMurderer As String = Convert.ToBase64String(My.Resources.youmurdererbb_reg) 

Dim YouMurderer As String = Encoding.UTF8.GetString(My.Resources.youmurdererbb_reg) 

但哪一個我選擇,它只是顯示整個形式與一個大的紅色「X」(像一個pictureboxes「ErrorImage」)(我有一個圖片設置爲表單背景作爲附加信息)。

另一個問題是,如果我不嘗試將其轉換:

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

我需要這方面的幫助。NET(:

Dim YouMurderer As String = My.Resources.youmurdererbb_reg 

然後將其與的錯誤出現框架4)!整個程序正在使用VB.net編寫,而不是C#或C++或JAVA。

回答

0

我創建了一個名爲BizArk的庫。您可以使用NuGet進行安裝,或者,如果您只是將源用作參考,則可以使用代碼here(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 
+0

Hrmmm,我安裝了nuget和bizark軟件包,但是,它沒有將FontUtil識別爲任何已聲明的函數。有什麼我應該先導入? – 2012-02-10 19:28:28

+0

您將要導入名稱空間。它應該是@Import BizArk.Core.Util(來自內存:) – Brian 2012-02-10 19:34:26

+0

順便說一句,我剛剛在我上面的例子中猜到了字體的名字,你可能需要弄清楚你需要使用哪個名字,這並不總是一個簡單的任務。 – Brian 2012-02-10 19:35:55