首页 > 解决方案 > 在 C# Windows 窗体中更改按钮字体 - “中”字体样式不可用

问题描述

我正在使用 C# 开发一个 Windows 窗体项目,我所做的其中一件事是创建一个自定义关闭按钮。我发现 Marlett 字体可用于为关闭按钮生成“X”,但我想使用“Medium”Marlett 样式,因为“Bold”太粗了。当我尝试在属性中选择“中”时,它始终默认为粗体。我的按钮如下所示:

在此处输入图像描述

在属性中,字体定义如下:

在此处输入图像描述

如果我尝试更改属性,我可以选择“中”,但它始终默认为“粗体”:

在此处输入图像描述

在设计器代码(我不会更改)中,它看起来像这样:

在此处输入图像描述

我尝试通过执行以下操作在运行时更改字体:

    private void FrmMain_Load(object sender, EventArgs e)
    {
        _BtnClose.Font = new System.Drawing.Font("Marlett", 12F, System.Drawing.FontStyle.Medium, System.Drawing.GraphicsUnit.Point, ((byte)(2)));
    }

但是,在System.Drawing.FontStyle.

我将如何强制我的程序使用“中”字体样式?

标签: c#winformsfonts

解决方案


好的,根据JQSOFTHerohtar的上述评论,我尝试在按钮上绘制控件。我创建了一个继承自 Button 的名为 CloseButton 的类,并修改了 onPaint 方法如下:

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        GraphicsPath gPath;
        Pen gPen;
        gPen = new Pen(System.Drawing.SystemColors.ControlText);
        gPath = new GraphicsPath();
        gPath.AddLine(20, 10, 30, 20);
        gPath.CloseFigure();
        gPath.AddLine(20, 20, 30, 10);
        gPath.CloseFigure();
        e.Graphics.DrawPath(gPen, gPath);
    }

该按钮如下所示:

在此处输入图像描述

我现在需要做的就是弄清楚当我将鼠标移到控件上时如何重绘图形(并且颜色会发生变化),但我会做到的!


推荐阅读