2017-04-07 51 views
-1

有沒有辦法將外部字體定義爲新的System.Drawing.FontFamily?我嘗試使用此代碼:System.Drawing.FontFamily不接受基於Uri的字體

FontFamily robotoLight = new FontFamily(new Uri("pack://application:,,,/"), 
             "./Fonts/#Roboto Light"); 

,並顯示此錯誤:

Cannot convert from System.Uri to string

我意識到,我一直在使用不同的參考和接受UriSystem.Windows.Media.FontFamily的一個,所以也沒有工作。

我研究並發現,定義自定義字體的方法是使用PrivateFontCollection.AddFontFile,但它使用字體的絕對路徑,如回答here

我的字體當前位於項目內的fonts文件夾中,並且構建爲包含在.exe文件中,因此絕對路徑對我來說是不可行的。

,我需要使用System.Drawing而不是System.Windows.Media因爲我創建一個自定義MessageBox

+0

你肯定「的Roboto光」是字體的名稱,而不是隻是名字文件?試試「./Fonts/#Roboto」。 – mm8

+0

@ mm8我確定。我一直在項目的其他部分使用它。我通過使用字體安裝程序 – Swellar

+0

檢查它哦,System.Drawing.FontFamily不理解pack URI。 – mm8

回答

1

System.Drawing.FontFamily不理解包的URI。請參考以下問題對你如何使用嵌入字體與System.Drawing.FontFamily類的例子:

How to quickly and easily embed fonts in winforms app in C#

+0

實現它,但不知道它是否真的有效。我用一個亂碼字體名稱將它與另一個字體名稱進行比較以將其恢復爲默認字體,並且它看起來不同我嘗試使用'BoldItalic'版本,但它不接受'FontStyle.Regular'和'FontStyle.Bold'。無論如何,感謝您的鏈接。 – Swellar