如何在 WinForms 应用程序中嵌入我自己的字体?
我想在我的 WinForms 应用程序中嵌入字体,这样我就不必担心它们被安装在计算机上。 我在 MSDN 网站上进行了一些搜索,发现了一些有关使用本机 Windows API 调用的提示,例如 Scott Hanselman 链接到的 Michael Caplan (sp?) 教程。 现在,我真的要经历这些麻烦吗? 我不能只使用我的应用程序的资源部分吗?
如果没有,我可能会走安装路线。 在这种情况下,我可以通过编程来做到这一点吗? 只需将字体文件复制到 Windows\Fonts 文件夹?
我知道许可问题。
I want to embed fonts in my WinForms application so that I don't have to worry about them being installed on the machine. I've searched a bit on the MSDN site and found a few hints about using native Windows API calls, for instance Michael Caplan's (sp?) tutorial linked to by Scott Hanselman. Now, do I really have to go through all that trouble? Can't I just use the resource part of my app?
If not I'll probably go the installing route. In that case, can I do that programmatically? By just copying the font file to the Windows\Fonts folder?
I am aware of licensing issues.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我将随机下载的字体拖放到我的资源中,这有效。 不过使用文件。 我想你也可以用它来安装字体?
I dragged and dropped a randomly downloaded font into my resources and this worked. Uses a file though. I guess you can use this as well to install fonts ?
是的,但需要是本机资源而不是 .NET 资源(即使用 rc.exe,本机资源编译器)。
Yes, but need to be native resources rather than .NET resources (i.e. using rc.exe, the native resource compiler).
我将采用骑士的方式嵌入字体,但当涉及到更改字体时,我选择此代码:
有关更多信息:更改字体和字体大小的最简单方法
i will go with knighter's way of embedding a font but when it comes to changing your font I choose this code:
for more information: Easiest way to change font and font size
这就是我在 VS 2013 中的工作,无需使用不安全的块。
嵌入资源
将字体加载到内存中
将
using System.Drawing.Text;
添加到 Form1.cs 文件在默认构造函数的上方和内部添加代码,以在内存中创建字体(不使用“不安全”,如其他示例所示)。 下面是我的整个 Form1.cs:
使用你的字体
向主窗体添加一个标签,并添加一个加载事件来设置 Form1.cs 中的字体:
This is what worked for me in VS 2013, without having to use an unsafe block.
Embed the resource
Load the font into memory
Add
using System.Drawing.Text;
to your Form1.cs fileAdd code above and inside your default constructor to create the font in memory (without using "unsafe" as other examples have shown). Below is my entire Form1.cs:
Use your font
Add a label to your main form, and add a load event to set the font in Form1.cs: