我正在尝试将按钮字体设置为系统的 Marlett 字体。但是,虽然我手动设置了字体,但使用了其他字体。此外,当我使用字体对话框为该按钮选择字体时,没有列出 Marlett。
为什么会这样?如何在 .NET Windows 窗体控件中使用 Marlett 字体?
虽然我不知道设计器背后的代码是什么,但我一直发现自定义安装的字体不会出现在设计器中。好消息是该Font
属性是环境属性,因此如果您希望所有控件都具有相同的属性,Font
您只需将其设置为Form
. 但是,您似乎只想拥有一个控件,Font
所以让我们这样做:
ctrl.Font = new Font("Marlett", 8.5f);
例如,它将将该控件设置Font
为Marlett
和大小8.5
。
如果您希望整套控件具有相同的属性Font
,并且可以将它们放置在像 a 这样的容器中Panel
,那么您只需Font
设置Panel
; 因为再次,它是一个环境属性。
button1.Font = new Font("Marlett",8, FontStyle.Regular);
将此代码放在您想要更改的按钮名称 Button1 中(在 iinitializecomponet 之后的 constrcutor 或表单 Load 事件中)
默认情况下,设计人员似乎希望将 GdiCharSet 设置为 0。这会导致 Marlett 字体回退到另一种字体。
如果将 GdiCharSet 更改为 1,它将正常渲染。
还要注意它在 .designer.cs 中所做的更改,这也将解释为什么当您从代码手动设置字体时它确实有效。
这最终对我有用。
ctrl.Font = new System.Drawing.Font("Marlett", 12f, FontStyle.Regular, GraphicsUnit.Point, ((byte)(1)));
最后一个 ((byte)(1)) 将 GdiCharSet 设置为 1,@Paul 在其他答案之一中指出了这一点。