C# 所有版本的Windows上的系统颜色是否相同?

C# 所有版本的Windows上的系统颜色是否相同?,c#,wpf,winforms,C#,Wpf,Winforms,NET框架包含定义所谓“系统颜色”的类。对于WinForms,它是,对于WP*它是。关于这一点,我有两个问题: 所有版本的Windows上系统颜色的默认值是否相同?如果没有,我在哪里可以找到实际值 系统颜色是否可配置?用户是否可以使用SystemColors全局更改所有应用程序的外观 如果颜色确实是可变的,并且我想保持应用程序的相同外观,而不管颜色的用户配置和操作系统版本如何,我假设我不能使用SystemColors,而是创建自己的颜色配置,并在整个代码中使用它,是吗?系统颜色确实可以由用户更改

NET框架包含定义所谓“系统颜色”的类。对于WinForms,它是,对于WP*它是。关于这一点,我有两个问题:

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

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

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

    例如,在Windows 10上,您可以选择控制面板中的“个性化”选项对其进行修改

    因此,请回答您的具体问题

  • 没有默认值,因为Windows附带了多个可在安装时选择的主题

  • 颜色是可配置的,用户可以全局更改

  • 1) 否,默认颜色已随不同版本的Windows而更改。只需将XP与Win10进行比较,您就会意识到颜色是非常不同的

    2) 是的,用户可通过“控制面板\外观和个性化\个性化”进行配置

    没有任何东西会强迫你在应用程序中使用系统颜色,因此如果你不引用它们,它不会影响应用程序中的任何内容。但是,它仍然会影响窗口的chrome部分(即边框等)

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

    下面是对您的问题的回答:

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

  • 是的,您可以使用方法以编程方式更改它们。此函数仅更改当前会话的颜色。要保持更改,必须在
    HKEY\u CURRENT\u USER\Control Panel\Colors
    更新注册表项

  • 其他资源:


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

    您会发现WPF团队博客中的这篇文章非常有用: