Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改C Windows窗体中的按钮字体-“中等”字体样式不可用_C#_Winforms_Fonts - Fatal编程技术网

C# 更改C Windows窗体中的按钮字体-“中等”字体样式不可用

C# 更改C Windows窗体中的按钮字体-“中等”字体样式不可用,c#,winforms,fonts,C#,Winforms,Fonts,我正在用C编写一个Windows窗体项目,我做的一件事就是创建一个自定义关闭按钮。我发现Marlett字体可以用来生成关闭按钮的X,但是我想使用中等Marlett样式,因为粗体太厚了。当我尝试在属性中选择“中等”时,它总是默认返回到粗体。我的按钮如下所示: 在属性中,字体的定义如下: 如果我尝试更改属性,我可以选择“中等”,但它始终默认返回为粗体: 在我不打算更改的设计器代码中,它如下所示: 我尝试通过执行以下操作在运行时更改字体: private void FrmMain_Load(o

我正在用C编写一个Windows窗体项目,我做的一件事就是创建一个自定义关闭按钮。我发现Marlett字体可以用来生成关闭按钮的X,但是我想使用中等Marlett样式,因为粗体太厚了。当我尝试在属性中选择“中等”时,它总是默认返回到粗体。我的按钮如下所示:

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

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

在我不打算更改的设计器代码中,它如下所示:

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

    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中没有可用的中等字体样式


如何强制程序使用中等字体?

好的,根据上面的注释,我已经尝试在按钮上绘制控件。我创建了一个名为CloseButton的类,该类继承自Button,并修改了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);
    }
按钮如下所示:


我现在需要做的就是弄清楚当我将鼠标移到控件上,颜色改变时,如何重新绘制图形,但我会做到的

Marlett没有多种样式或权重。它只是一个单一的字体。好吧,那我怎么才能阻止它显示为粗体呢?你不能。马利特就是马利特。它没有任何额外的重量。大胆意味着什么;这是字体的默认外观,您无法更改。他们会绘制它。你也这么做怎么样?画x形状并不难。还要考虑,如果客户端的机器没有任何原因的MARLET字体怎么办?按钮将使用默认字体显示r字母。Visual Studio使用WPF窗口并绘制自己的控件。关闭按钮X只是一个数据集为F1M8.583,8L13,12.424 12.424,13 8,8.583 3.576,13 3,12.424 7.417,8 3,3.576 3.576,3 8,7.417 12.424,3 13,3.576z的按钮。我不确定在WinForms中需要做什么才能实现同样的目标。