C# 表单关闭、最小化和最大化按钮

问题描述 投票:0回答:1

https://i.stack.imgur.com/tBhyG.png 所以我一直在尝试通过使用 VisualStyleElement 将它们复制到按钮上来获得关闭、最小化和最大化的图像,但在某种程度上,只有关闭有效,其他图像只是作为整个图像的一小部分绘制。这是我使用的代码

private void button1_Paint(object sender, PaintEventArgs e)
{
    if (VisualStyleRenderer.IsElementDefined(VisualStyleElement.Window.MinButton.Normal))
    {
        VisualStyleRenderer renderer = new VisualStyleRenderer(VisualStyleElement.Window.MinButton.Normal);
        Size closeButtonSize = renderer.GetPartSize(e.Graphics, ThemeSizeType.True);

        // Resize the button control to match the close button icon size
        button1.Width = closeButtonSize.Width;
        button1.Height = closeButtonSize.Height;

        Rectangle rectangle1 = new Rectangle(0, 0, button1.Width, button1.Height);
        renderer.DrawBackground(e.Graphics, rectangle1);
    }
}

我尝试过使用不同的方法,但由于我不太擅长编码,所以它们都不起作用。我希望有人能帮助我。

c# minimize maximize
1个回答
0
投票

要在 C# 中使用 VisualStyleElement 复制关闭、最小化和最大化按钮,您可以按如下方式调整代码

private void button1_Paint(object sender, PaintEventArgs e)
{
    // Check if the visual style elements are defined
    if (VisualStyleRenderer.IsElementDefined(VisualStyleElement.Window.CloseButton.Normal) &&
        VisualStyleRenderer.IsElementDefined(VisualStyleElement.Window.MinButton.Normal) &&
        VisualStyleRenderer.IsElementDefined(VisualStyleElement.Window.MaxButton.Normal))
    {
        VisualStyleRenderer closeRenderer = new VisualStyleRenderer(VisualStyleElement.Window.CloseButton.Normal);
        VisualStyleRenderer minimizeRenderer = new VisualStyleRenderer(VisualStyleElement.Window.MinButton.Normal);
        VisualStyleRenderer maximizeRenderer = new VisualStyleRenderer(VisualStyleElement.Window.MaxButton.Normal);

        // Get the size of the buttons
        Size closeSize = closeRenderer.GetPartSize(e.Graphics, ThemeSizeType.True);
        Size minimizeSize = minimizeRenderer.GetPartSize(e.Graphics, ThemeSizeType.True);
        Size maximizeSize = maximizeRenderer.GetPartSize(e.Graphics, ThemeSizeType.True);

        // Draw the buttons
        closeRenderer.DrawBackground(e.Graphics, new Rectangle(0, 0, closeSize.Width, closeSize.Height));
        minimizeRenderer.DrawBackground(e.Graphics, new Rectangle(closeSize.Width, 0, minimizeSize.Width, minimizeSize.Height));
        maximizeRenderer.DrawBackground(e.Graphics, new Rectangle(closeSize.Width + minimizeSize.Width, 0, maximizeSize.Width, maximizeSize.Height));
    }
}

在此代码中:

我们检查是否定义了关闭、最小化和最大化按钮的视觉样式元素。 我们为每个按钮创建单独的 VisualStyleRenderer 对象。 我们使用 GetPartSize 获取每个按钮的大小。 我们根据按钮的大小将每个按钮绘制在适当的位置。 确保按钮控件 (button1) 有足够的宽度来容纳所有三个按钮。您可以在表单设计器中调整按钮的大小,或者根据需要以编程方式调整按钮的大小。

© www.soinside.com 2019 - 2024. All rights reserved.