【问题标题】:Are SystemColors the same on all versions of Windows?SystemColors 在所有版本的 Windows 上都相同吗?
【发布时间】:2016-05-27 07:36:43
【问题描述】:

.NET 框架包含定义所谓的“系统颜色”的类。对于 WinForms,它是 System.Drawing.SystemColors,对于 WP*,它是 System.Windows.SystemColors。我对此有两个问题:

  1. 所有版本的 Windows 系统颜色的默认值是否相同?如果没有,我在哪里可以找到实际值?
  2. 系统颜色是否可配置?用户是否可以使用SystemColors 全局更改所有应用程序的外观?

如果颜色确实是可变的,并且我想保持我的应用程序的相同外观,而不管用户配置的颜色和操作系统版本如何,我假设我不能使用SystemColors,而是创建我自己的颜色配置并在整个过程中使用它代码,对吗?

【问题讨论】:

标签: c# wpf winforms


【解决方案1】:

1) 不,默认颜色随 Windows 的不同版本而改变。把XP和Win10对比一下,你就会发现颜色是很不一样的。

2) 是的,用户可以从“控制面板\外观和个性化\个性化”中配置它们。

没有什么会强迫您在应用内部使用系统颜色,因此如果您不引用它们,它不会影响应用内部的任何内容。然而,它仍然会影响窗口的镀铬部分(即边框等)

【讨论】:

    【解决方案2】:

    如果您查看KnownColorTable.cs 源代码,您将看到该类使用Windows API GetSysColor 函数获取颜色,该函数根据操作系统/用户配置返回颜色。

    以下是您问题的答案:

    1. 不,它们不一样。它们是操作系统/用户级别的配置。每个 Windows 主题以不同的方式指定系统颜色。您可以自己调整系统颜色以创建自己的 Windows 主题

    2. 是的,您可以使用SetSysColors 方法以编程方式更改它们。此函数仅更改当前会话的颜色。要保留更改,您必须更新HKEY_CURRENT_USER\Control Panel\Colors 处的注册表项。

    其他资源:

    • 您会发现 WPF 团队博客中的这篇文章很有用:SystemColors Reference
    • SetSysColors PInvoke.net 中的页面。该页面包含使用此方法和注册表设置颜色的示例。

    【讨论】:

      【解决方案3】:

      系统颜色确实可以由用户更改。

      例如,在 Windows 10 上,您可以选择控制面板中的“个性化”选项来修改它们。

      因此,回答您的具体问题

      1. 没有默认值之类的东西,因为 Windows 附带了多个可以在安装时选择的主题。

      2. 颜色是可配置的,用户可以全局更改。

      【讨论】:

        猜你喜欢
        • 2012-01-17
        • 1970-01-01
        • 2011-02-28
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-15
        相关资源
        最近更新 更多