# 主题管理模块设计（1）

## 前言：

主题管理是基础功能，并不属于业务功能，是属于可跨项目迁移的框架型结构。

对于项目而言，属于可有可无，有则锦上添花，无也不着急的功能。

尴尬的情况是，如果开始的时候，没有考虑到主题管理的设计，则该功能在迭代的过程中，积难重返。

一般的解决方案都是引用的控件库中，自带主题管理功能。

## 提要：

windows的主题管理分成4种。

第一种是 Win11 和Win10,这种系统底层框架的UI区别

第二种是Windows的主题

第三种是Windows的背景显色模式，有浅色和深色两种，中间又分成系统主题色和应用主题色

第四种是windows 强调色

二、三、四配置信息都在注册表中，其中二是预置了一套三四的模板。四的应用会影响任务栏和标题栏，这里可以单独配置。

所以对于实际的应用，接收和处理到的，，第一是系统主题色就是任务栏的背景颜色。

第二应用主题色，这个是跟随系统模式设计需要监听的。

监听注册表的方式有很多，不罗列



主题管理，通常有两种，白和黑，也可以设计成主题加强调色的方式。

也可以模糊主题，改成强调色混合主题实现。

主题管理窗口通常提供三种选项，白天，黑夜，跟随系统。因为这三种选项和实际的两种是不一样的，所以在做分类的时候，需要格外注意。

在实际的实现上上，就分成CurrentTheme，CurrentUITheme，AppsTheme，SystemTheme

其中，AppsTheme 是系统设定的用户主题，SystemTheme 是系统设定的系统主题（也就是任务栏的颜色）



这里可以用在比如说项目里套了多个UI控件的实现的时候，总要有一个地方去管理这些UI的模式，就可以用这种。

用静态单例Current,来绑定主程序的 主题管理

也可以创建这个实例，用来管理局部的控件。 即，实现单控件可以自定义的效果。比如窗口A 用黑色主题，窗口B用白色主题



然后我们稍微包装一下，把这三种主题设计，就可以叫做白天模式，夜间模式，跟随系统。如果在这里面扩展就是，我们允许用户自定义一些背景，透明度，字体，颜色之类的。

强调色的设计，放在模式里面，属于更改了某个模式中的主题色之类的。当然主题色也不一定是一个颜色，有可能是一个色块或者就是一个背景

然后我们可以给它们套个皮，起个名字比如说

流光溢彩，生如夏花。

当然色彩和色系的搭配这些就设计到专业的知识了。一般的程序中，能管理好多个第三方或者自绘UI库就很不错了。





