主题管理模块设计(1)

前言:

主题管理是基础功能,并不属于业务功能,是属于可跨项目迁移的框架型结构。

对于项目而言,属于可有可无,有则锦上添花,无也不着急的功能。

尴尬的情况是,如果开始的时候,没有考虑到主题管理的设计,则该功能在迭代的过程中,积难重返。

一般的解决方案都是引用的控件库中,自带主题管理功能。

提要:

windows的主题管理分成4种。

第一种是 Win11 和Win10,这种系统底层框架的UI区别

第二种是Windows的主题

第三种是Windows的背景显色模式,有浅色和深色两种,中间又分成系统主题色和应用主题色

第四种是windows 强调色

二、三、四配置信息都在注册表中,其中二是预置了一套三四的模板。四的应用会影响任务栏和标题栏,这里可以单独配置。

所以对于实际的应用,接收和处理到的,,第一是系统主题色就是任务栏的背景颜色。

第二应用主题色,这个是跟随系统模式设计需要监听的。

监听注册表的方式有很多,不罗列

主题管理,通常有两种,白和黑,也可以设计成主题加强调色的方式。

也可以模糊主题,改成强调色混合主题实现。

主题管理窗口通常提供三种选项,白天,黑夜,跟随系统。因为这三种选项和实际的两种是不一样的,所以在做分类的时候,需要格外注意。

在实际的实现上上,就分成CurrentTheme,CurrentUITheme,AppsTheme,SystemTheme

其中,AppsTheme 是系统设定的用户主题,SystemTheme 是系统设定的系统主题(也就是任务栏的颜色)

这里可以用在比如说项目里套了多个UI控件的实现的时候,总要有一个地方去管理这些UI的模式,就可以用这种。

用静态单例Current,来绑定主程序的 主题管理

也可以创建这个实例,用来管理局部的控件。 即,实现单控件可以自定义的效果。比如窗口A 用黑色主题,窗口B用白色主题

然后我们稍微包装一下,把这三种主题设计,就可以叫做白天模式,夜间模式,跟随系统。如果在这里面扩展就是,我们允许用户自定义一些背景,透明度,字体,颜色之类的。

强调色的设计,放在模式里面,属于更改了某个模式中的主题色之类的。当然主题色也不一定是一个颜色,有可能是一个色块或者就是一个背景

然后我们可以给它们套个皮,起个名字比如说

流光溢彩,生如夏花。

当然色彩和色系的搭配这些就设计到专业的知识了。一般的程序中,能管理好多个第三方或者自绘UI库就很不错了。