我有一个表单(参见截图):
正如您所看到的,这是一个相当基本的表单,有一个保存按钮。我已经编写了程序,如果任何文本字段被更改,“SAVE”按钮的颜色也会改变,以便明显地表明我没有点击保存并且不要忘记保存。不幸的是,仅仅将按钮的BackColor更改为红色还不够,因为它非常丑陋。
我该怎么做才能将按钮的颜色更改为红色,但不会这么丑?正如您所看到的那样,“BackColor”不会改变整个按钮,只会改变内部部分。边框仍然是传统的透明灰色。
我有一个表单(参见截图):
正如您所看到的,这是一个相当基本的表单,有一个保存按钮。我已经编写了程序,如果任何文本字段被更改,“SAVE”按钮的颜色也会改变,以便明显地表明我没有点击保存并且不要忘记保存。不幸的是,仅仅将按钮的BackColor更改为红色还不够,因为它非常丑陋。
我该怎么做才能将按钮的颜色更改为红色,但不会这么丑?正如您所看到的那样,“BackColor”不会改变整个按钮,只会改变内部部分。边框仍然是传统的透明灰色。
使用LinearGradientBrush
稍微一点就能够大幅减轻纯红色按钮的刺眼感。
button1.ForeColor = Color.White;
Bitmap bmp = new Bitmap(button1.Width, button1.Height);
using (Graphics g = Graphics.FromImage(bmp)) {
Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height);
using (LinearGradientBrush br = new LinearGradientBrush(
r,
Color.Red,
Color.DarkRed,
LinearGradientMode.Vertical)) {
g.FillRectangle(br, r);
}
}
那么你可以将图像分配给按钮的BackgroundImage
属性:
button1.BackgroundImage = bmp;
结果:
注意:给按钮分配背景图像将失去鼠标悬停着色。
button1.BackgroundImage = null;
就可以了。 - LarsTech您可以使用按钮的一个属性“FlatStyle”。默认情况下,它是标准的。但是如果您将其切换为“Popup”,则背景颜色将扩展到按钮的区域。您可以比较以下内容:
有很多关于如何使用 C# 创建漂亮按钮的在线教程。例如,这个可以让你创建类似于 Vista 的按钮。点击这里查看:http://www.codeproject.com/Articles/19318/Vista-Style-Button-in-C
对于基本颜色,请参考此 SO 问题:
这在WinForms中行不通,但您可能想切换到WPF。 因为您可以配置所有东西,所以它更方便。(甚至是进度条的颜色)
编辑:OP不必完全重写应用程序。 他只需要重新设计布局,代码可以复制并粘贴到新的WPF项目中。
编辑²:您甚至不需要使用代码来更改WPF按钮的颜色,您可以在XAML文件中定义一个30%不透明度的红色叠加层。真的很容易。