在设计WinForms UI时,您如何处理不同的XP主题?您是否避免使用硬编码颜色值或仅接受您的UI在非标准主题上看起来不太好?
例如,我有一个浅蓝色渐变面板,与标准控件背景颜色看起来很好,但会与其他自定义主题冲突.采取什么好方法?
避免使用"白色"或"绿色"等名称的十六进制颜色和颜色.大多数对象的颜色选择器应该能够显示名称为"ActiveWindow"或"ForegroundText"的颜色.这些是你想要使用的颜色.它们也可以通过代码获得,并且您希望选择它们,以便名称与它们的使用方式有某种关系.例如,不要将"ForegroundText"设置为背景颜色,因为您需要黑色背景.如果您有渐变,则使用这些颜色来构建渐变.此外,当主题发生变化时,您可能需要处理一个事件.
如果您选择尊重主题,那就是这样.如果你有一个真正的外部接口,那么你可能想要指定自己的颜色.在这种情况下,永远不要使用窗户颜色,因为它们不可靠,你可能最终得到一些真正难看的东西.这意味着您需要更改标准控件中的所有默认值,但如果您这样做,您可能还是拥有自己的控件.
总而言之,要记住的是它是一个全有或全无的镜头:要么尊重主题,要么总是使用基于Windows小部件元素定义的颜色,或者不使用主题,从不使用这些颜色.