繁体   English   中英

在.NET中获取默认的Windows系统颜色

[英]Get default Windows System Colors in .NET

我正在编写一个自定义Button控件作为(即将成为)免费控件套件的一部分,我想将我的(默认)控件颜色基于相应的Windows系统颜色。 因此,在线查找“默认的Windows系统颜色”后,我无法找到有关Windows控件的系统颜色(特别是不是按钮控件)的信息。

有没有办法在.NET中获取此颜色信息(例如按钮边框颜色,按钮突出显示颜色,按钮悬停颜色,按钮单击背景颜色等)?

是。 事实上,有一整个专门的课程:

SystemColors类

...或者对于WPF(感谢@ORMapper), System.Windows.SystemColors类

有一个系统颜色类,它将为您提供颜色。

对于WinForms使用:

System.Drawing.SystemColors

对于WPF使用:

System.Windows.SystemColors

您还可以使用GetSysColor函数 api函数。

瓦尔特

你可以使用Win API, GetSysColor函数......

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetSysColor(int nIndex);

该函数返回给定元素的红色,绿色,蓝色(RGB)颜色值。

要显示RGB值的组件,请使用GetRValue,GetGValue和GetBValue宏。

单色显示器的系统颜色通常被解释为灰色阴影。

要使用系统颜色画笔绘制,应用程序应使用GetSysColorBrush(nIndex),而不是CreateSolidBrush(GetSysColor(nIndex)),因为GetSysColorBrush返回缓存的画笔,而不是分配新的画笔。

我想要同样的事情。 我的方法是,在初始化时,创建一个临时窗口,其背景颜色在GetSysColor(COLOR_BTNFACE)中指定,这是对话框的“标准”背景颜色。 然后,我创建一个没有文本的按钮并获取颜色。 永远不会显示此临时窗口,并立即销毁(WM_CREATE退出代码= -1)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM