2013-08-02 64 views
1

我想安裝字體,但我的代碼不工作。如何在 用戶的PC上以編程方式使用C#Windows窗體應用程序安裝新字體,以便我可以在此應用程序中包含的報告中使用此 字體?在C#中安裝字體?

這是我的代碼:

namespace Font 
{ 
    public partial class Form1 : Form 
    { 
     [DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)] 
     public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)] 
     string lpFileName); 

     public void InstallFont() 
     { 

      var result = AddFontResource(@"D:\Temp\BAseman.TTF"); 
      var error = Marshal.GetLastWin32Error(); 
     } 

     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void btnInstall_Click(object sender, EventArgs e) 
     { 
      InstallFont(); 
     } 
    } 
} 
+0

它怎麼不工作?是否有例外?字體是否無法安裝?字體是否無法正確顯示? –

+0

-1/dup:如果你想再次提出同樣的問題,至少要解釋爲什麼以前版本的建議不起作用。 –

回答

0

安裝的字體是其複製到Fonts目錄一樣簡單。所以,只是這樣做:

File.Copy("MyNewFont.ttf", 
    Path.Combine(Environment.GetFolderPath(SpecialFolder.Windows), 
     "Fonts", "MyNewFont.ttf")); 

但是,這裏有一些注意事項。

  1. 用戶需要擁有管理員權限,操作系統會提示他們。
  2. 字體需要駐留在應用程序的正在執行的文件夾中,以便我的代碼能夠正常工作。

您可以繼續使用該Windows API,但它可能會更困難。