SystemColors在所有版本的Windows上都相同吗?

时间:2016-05-27 07:36:43

标签: c# wpf winforms

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

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

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

3 个答案:

答案 0 :(得分:7)

1)不,使用不同版本的Windows更改了默认颜色。只需将XP与Win10进行比较,您就会发现着色非常不同。

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

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

答案 1 :(得分:3)

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

以下是您的问题的答案:

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

  2. 是的,您可以使用SetSysColors方法以编程方式更改它们。此功能仅更改当前会话的颜色。要保留更改,您必须在excelSheet.get_Range("A" + lineBreakAreaTop, "J" + lineBreakAreaBottom).WrapText = true;更新注册表项。

  3. 其他资源:

    • 您会在WPF团队博客中找到这篇有用的帖子:SystemColors Reference
    • PInvoke.net中的
    • SetSysColors页面。该页面包含使用此方法设置颜色并使用注册表的示例。

答案 2 :(得分:2)

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

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

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

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

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