如何检索与当前 Aero 风格相关的系统颜色?我特别需要选择渐变中使用的颜色。 SystemColors
结构不包含所需的颜色。
或者:如何使用 WinAPI 在特定 Canvas (图形对象)上绘制选择?
最佳答案
好的,所以最初问题的答案是:无法确定我要求的具体颜色。它由操作系统提供的内部主题例程评估。
幸运的是,有一种方法可以让操作系统绘制一个主题控件,即所谓的部分。 .NET 提供了两个用于绘制 UI 的类:
System.Windows.Forms.VisualStyles用于主题 UI 和
System.Windows.Forms.ControlPaint对于非主题“Windows 经典”。
我要求的选区可以通过以下代码绘制:
// Graphics g = ...
VisualStyleRenderer selectionRenderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Item.Selected);
selectionRenderer.DrawBackground(g, someRectangle);
不幸的是,默认窗口主题不支持 TreeView.Item.Selected
和 ListView.Item.Selected
。但是,可以通过 p/invoke 使用 WinAPI 将主题切换到资源管理器:
// C++
SetWindowTheme(hwnd, L"Explorer", nullptr);
然后通过几个 UXTheme.h 例程 P/invoke 他的方式,效果很好。
关于c# - 如何获得 Windows 7 aero 选择颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039243/