我们写exe程序时,默认字体是宋体,比较难看,指定了其他字体,但是其他用户上没有你指定的这个字体的话,也会变成默认的宋体。解决的办法有这么几个:
1,叫用户安装相应字体,这个基本不可能实现,因为没有几个人会进行这样的操作;
2,给用户安装相应字体,这个办法可行,在制作安装包时将字体打包进去,然后用户安装程序的时候连字体也一并安装上去,一劳永逸;
3,把字体导入到程序资源中,让程序直接调用字体资源,缺点是导致程序体积巨大;
4,将字体文件放到程序目录里,在程序里单独调用。
个人觉得第4种办法比较方便,所以决定采用这种方法,把代码写出来给需要的同学。
引用:
using System.Drawing.Text;
public void Setfont()
{
string AppPath = Application.StartupPath;
try
{
PrivateFontCollection font = new PrivateFontCollection();
font.AddFontFile(AppPath + @"/font/msyh.ttf");//字体的路径及名字
Font myFont = new Font(font.Families[0].Name, 9F,FontStyle.Regular,GraphicsUnit.Point, ((byte)(134)));
//设置窗体控件字体,哪些控件要更改都写到下面
label1.Font = myFont;
label2.Font = myFont;
label3.Font = myFont;
button1.Font = myFont;
button2.Font = myFont;
button3.Font = myFont;
button4.Font = myFont;
button5.Font = myFont;
}
catch
{
MessageBox.Show("字体不存在或加载失败/n程序将以默认字体显示", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
然后在public Form1()
{
InitializeComponent();
Setfont();//启动字体设置函数
}
本文介绍了如何在C# WinForm应用程序中使用指定字体,尤其是在用户计算机上未安装该字体的情况下。提供了四种解决方案,重点讲解了第四种方法——将字体文件放入程序目录并在运行时加载。通过创建PrivateFontCollection实例,动态加载ttf字体文件,并为窗体控件设置新字体。当字体文件加载失败时,程序会显示警告并回退到默认字体。

1290

被折叠的 条评论
为什么被折叠?



