如何指定主题默认字体的粗体版本?

时间:2008-10-16 10:00:30

标签: .net c++ visual-studio winforms

我在Windows窗体中遇到跨主题兼容性问题。如果没有在Windows窗体上设置控件的字体,它将使用具有正确字体和大小的系统字体。如果您想使字体粗体,则硬编码您正在编程的当前主题的其余系统字体值。例如:

System::Windows::Forms::Label^ label1 = gcnew System::Windows::Forms::Label();

this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(9, 12);
this->label1->Name = L"lblExample";
this->label1->Size = System::Drawing::Size(44, 13);
this->label1->TabIndex = 3;
this->label1->Text = L"Example Text";

如果我然后通过属性编辑器更改其属性以使bold = true,则会在此行中添加:

this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(0)));

有没有办法使用默认字体,但是加粗?

此外,是否有使用系统字体的方法,但是将尺寸增大3或4个点?

2 个答案:

答案 0 :(得分:1)

啊,我想我找到了答案:

this->label1->Font = gcnew System::Drawing::Font(this->label1->Font, FontStyle::Bold);

但现在这打破了设计师的观点:(

答案 1 :(得分:1)

您可以在构造函数中的InitializeComponent调用之后直接放置修改后的字体初始化。

此外,您可以使用众多构造函数中的一个来更改大小。

InitializeComponent();

label1->Font = gcnew System::Drawing::Font(
    label1->Font->FontFamily, 
    label1->Font->SizeInPoints + 4, 
    FontStyle::Bold,
    GraphicsUnit::Point);

这样可以避免设计视图混淆......但您也无法在设计视图中看到它。