c# - 如何获得 Windows 7 aero 选择颜色?

标签 c# winforms user-interface drawing aero

如何检索与当前 Aero 风格相关的系统颜色?我特别需要选择渐变中使用的颜色。 SystemColors 结构不包含所需的颜色。

Aero colors

或者:如何使用 WinAPI 在特定 Canvas (图形对象)上绘制选择?

最佳答案

好的,所以最初问题的答案是:无法确定我要求的具体颜色。它由操作系统提供的内部主题例程评估。

幸运的是,有一种方法可以让操作系统绘制一个主题控件,即所谓的部分。 .NET 提供了两个用于绘制 UI 的类:

我要求的选区可以通过以下代码绘制:

// Graphics g = ...
VisualStyleRenderer selectionRenderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Item.Selected);
selectionRenderer.DrawBackground(g, someRectangle);

不幸的是,默认窗口主题不支持 TreeView.Item.SelectedListView.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/

相关文章:

c# - 有没有办法将任务 ID 传递给调用函数?

c# - 改变下拉菜单列表项正方形

c# - 有没有办法在应用程序中显示数据集可视化工具?

c# - 进入全屏模式时更改页面

c# - 如何删除 HttpClient 请求 header C# 中的默认字符集

时间:2019-03-08 标签:c#htmlagilitypack

c# - 在 UITypeEditor 的 EditValue 中访问额外的上下文数据

python - 如何判断 `ComboBox` 的下拉列表是否打开?

java - 我无法从 AbstractAction 内部类中声明的 actionPerformed 设置不可见的 JFrame,如何解决?

java - JTable 工具提示显示位置问题