2013-08-02 48 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,但它可能会更困难。