所以我一直在尝试通过使用 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# 中使用 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) 有足够的宽度来容纳所有三个按钮。您可以在表单设计器中调整按钮的大小,或者根据需要以编程方式调整按钮的大小。