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