WPF 主题和颜色

问题描述 投票:0回答:1

我不知道这是否可能,或者如何实现它,但我想问这个问题,看看是否有人在 WPF 中做过类似的事情。

目前我们有一个主题应用程序。有浅色、深色和单色主题。每个主题都有一组定义的颜色,用于各种用途。

我们最近有消息称,我们希望使应用程序更加“可定制”,因为用户希望创建自己的主题(甚至包括他们自己的徽标品牌)

我的问题是,由于我们目前为每个主题定义了如此多的颜色,是否可以定义一个基色,然后当我们使用该颜色时,更改它(更深或更浅)以实现相同的外观和感觉?

当前颜色定义示例:

  <SolidColorBrush x:Key="BlueDark25" Color="#F6F7F9" />
  <SolidColorBrush x:Key="BlueDark50" Color="#ECEFF3" />
  <SolidColorBrush x:Key="BlueDark100" Color="#DADEE8" />
  <SolidColorBrush x:Key="BlueDark150" Color="#C7CEDC" />
  <SolidColorBrush x:Key="BlueDark200" Color="#B4BED1" />
  <SolidColorBrush x:Key="BlueDark250" Color="#A1ADC5" />
  <SolidColorBrush x:Key="BlueDark300" Color="#8F9DB9" />
  <SolidColorBrush x:Key="BlueDark350" Color="#7C8DAE" />
  <SolidColorBrush x:Key="BlueDark400" Color="#697DA2" />
  <SolidColorBrush x:Key="BlueDark450" Color="#576C97" />
  <SolidColorBrush x:Key="BlueDark500" Color="#445C8B" />
  <SolidColorBrush x:Key="BlueDark600" Color="#364A6F" />
  <SolidColorBrush x:Key="BlueDark700" Color="#182031" />
  <SolidColorBrush x:Key="BlueDark900" Color="#07090E" />

是否可以允许用户(或有预定义的)“BlueDark”定义(仅 1),然后根据使用情况将其变暗或变亮?那么用户可以定义 2 或 3 种主要颜色,然后应用程序为他们完成剩下的工作吗?

我很高兴我无法完全匹配此处显示的颜色,但我认为一定有某种方法可以做到这一点。

提前非常感谢。

wpf theming color-palette solidcolorbrush
1个回答
1
投票

您可以将

Opacity
Brush
设置为
0
1
之间的值。这使您可以定义不透明度为 1 的基色,然后定义作为基色的其他画笔,例如:

<SolidColorBrush x:Key="Blue" Color="Blue" />
<SolidColorBrush x:Key="LighterBlue" Color="Blue" Opacity="0.7" />
...

除了这个解决方案之外,我认为没有一种简单的方法可以仅使用 XAML 中的基色来生成整个配色方案。您也许可以通过以编程方式生成画笔来实现它。

© www.soinside.com 2019 - 2024. All rights reserved.