gpt4 book ai didi

c# - 在 Winforms 的标签上使用自定义字体

转载 作者:可可西里 更新时间:2023-11-01 03:02:46 29 4
gpt4 key购买 nike

我的 Winform 上有一个标签,我想使用一种名为 XCalibur 的自定义字体,使它看起来更时髦。

如果我在标签上使用自定义字体,然后构建解决方案,然后 .ZIP\bin\Release 中的文件,最终用户将看到带有我使用的自定义应用程序的标签,无论他们是否安装了该字体?

如果不是这种情况,在 Labels.Text 上使用自定义字体的正确方法是什么?

最佳答案

在浏览了大约 30-50 篇关于此的帖子后,我终于能够想出一个实际可行的解决方案!请按顺序执行以下步骤:

1.) 在您的应用程序资源中包含您的字体文件(在我的例子中是 ttf 文件)。为此,请双击“Resources.resx”文件。

enter image description here

2.) 突出显示“添加资源”选项并单击向下箭头。选择“添加现有文件”选项。现在,搜索您的字体文件,选择它,然后单击“确定”。保存“Resources.resx”文件。

enter image description here

3.) 创建一个函数(比如 InitCustomLabelFont() ),并在其中添加以下代码。

        //Create your private font collection object.
PrivateFontCollection pfc = new PrivateFontCollection();

//Select your font from the resources.
//My font here is "Digireu.ttf"
int fontLength = Properties.Resources.Digireu.Length;

// create a buffer to read in to
byte[] fontdata = Properties.Resources.Digireu;

// create an unsafe memory block for the font data
System.IntPtr data = Marshal.AllocCoTaskMem(fontLength);

// copy the bytes to the unsafe memory block
Marshal.Copy(fontdata, 0, data, fontLength);

// pass the font to the font collection
pfc.AddMemoryFont(data, fontLength);

您的自定义字体现已添加到 PrivateFontCollection。

4.) 接下来,将字体分配给您的标签,并向其中添加一些默认文本。

        //After that we can create font and assign font to label
label1.Font = new Font(pfc.Families[0], label1.Font.Size);
label1.Text = "My new font";

5.) 转到表单布局并选择标签。右键单击它并选择“属性”。查找属性“UseCompatibleTextRendering”并将其设置为“True”。

6.) 如有必要,您可以在确定字体永远无法再次使用后将其释放。调用PrivateFontCollection.Dispose() method ,然后您还可以安全地调用 Marshal.FreeCoTaskMem(data)。在应用程序的整个生命周期中,不打扰并让字体加载是很常见的。

7.) 运行您的应用程序。您现在应该看到已经为给定标签设置了自定义字体。

干杯!

关于c# - 在 Winforms 的标签上使用自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1297264/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com