2010-01-29 85 views
1

我有一个WTL C++应用程序,我希望用户能够为某些UI元素选择不同的颜色,并使用GradientFill API调用应用渐变填充。但是,不要让用户选择渐变的开始和结束颜色,我希望他们能够选择“基本”颜色,并为我的应用程序自动计算合适的开始/结束颜色。我想最终得到一个类似于Windows用于各种主题元素的填充。基础颜色可以是渐变的“中间”颜色,我的应用程序以某种方式计算渐变开始的颜色稍浅,渐变结束的颜色稍深。或者,我可以使用底座作为起始颜色并计算底部,反之亦然。计算给定基色的渐变填充的开始和结束颜色

我敢肯定,这对一些RGB宏魔法来说会相对容易,但我真的不知道从哪里开始。任何想法都会受到欢迎。

回答

2

RGB颜色空间不适合这个。使用HSL or HSV,通过改变单个组件可以很容易地自动生成好看的渐变。从HSL/V转换为RGB三元组,您可以在API中使用simple