您的位置:首页 > 编程语言 > C#

[C#]从外部文件引入字体文件并显示到控件

2013-03-03 14:36 162 查看
看来我对字体方面的了解还是不够多啊。

从网上找了段代码,本以为拷里头就完事呢,结果发现到加载字体文件都没问题,这些我在VB6时代都干过。

但是当我打算把该字体应用到程序时,却自动变回了系统默认字体。

这表示我没有给予正确的参数。好吧我承认我不知道那应该是什么!

………………

好吧,从网上找来的代码永远是那么的不靠谱!

经我仔细的思索,我认为他把从文件加载的字体名称代入到建立字体对象的参数中,不是一个正确的做法。

因为程序很可能尝试从系统安装的字体中寻找它,当然是找不到的,从而改用默认字体替代。

于是,我重新定义了需要的[FontFamily]对象,使用从外部字体文件引入时的对象为参数,而不是名称的字符串,这次没问题了,字体终于变了。

最后我把异常扔出也改了,否则我可能早就看到是哪里出了错误!!!

//**********************************************
// 添加命名空间引用
//**********************************************
using System.Drawing.Text;

//**********************************************
//自定义模块:从外部字体文件加载字体样式到程序。
//**********************************************
public void Setfont()
{
string AppPath = Application.StartupPath;
try
{
//从外部文件加载字体文件
PrivateFontCollection font = new PrivateFontCollection();
font.AddFontFile(AppPath + @"\DigitalFonts\DS-DIGI.TTF");

//定义成新的字体对象
FontFamily myFontFamily = new FontFamily(font.Families[0].Name, font);
Font myFont = new Font(myFontFamily,56F,FontStyle.Regular);

//将字体显示到控件
label1.Font = myFont;

}
catch (InvalidCastException e)
{
MessageBox.Show(e.Message.ToString(), "异常:", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

//**********************************************
// 引用方法
//**********************************************

public Form1()
{
InitializeComponent();
Setfont();//启动字体设置函数
}


最后有点小问题的是FontStyle这个枚举。

有的字体很特殊,居然不支持默认的 Regular 样式,我试了粗体和斜体一样不成功。

好吧,我不知道该写什么了,我放弃使用那个字体了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: