C# 创建一个;“动态”;HSB颜色选择器的梯度
我想在WPF/C中创建一个类似于我在Photoshop中看到的颜色选择器 当我移动色调滑块时,渐变应该会更新。我首先想知道如何创建渐变,各个颜色停止应该出现在哪里,它们应该包含什么颜色值 由于梯度由C# 创建一个;“动态”;HSB颜色选择器的梯度,c#,wpf,colors,C#,Wpf,Colors,我想在WPF/C中创建一个类似于我在Photoshop中看到的颜色选择器 当我移动色调滑块时,渐变应该会更新。我首先想知道如何创建渐变,各个颜色停止应该出现在哪里,它们应该包含什么颜色值 由于梯度由 白-红 黑白 黑红色 我可以很容易地创建单个渐变,但如何创建这样的“复合”渐变 一个更简单的选择是为HSB值分别设置3个滑块 当我移动一个滑块时,另两个滑块上的颜色应该会更新。有任何链接或提示让我开始吗?我需要找到一种方法来计算其他两个滑块的颜色,因为我移动一个。当我将色调滑块从红-蓝移动时
- 白-红
- 黑白
- 黑红色
希望有帮助 关于梯度,我想你应该自己画。看一看 三个滑块可以这样实现:
- 实现一个抽象IMultivalueConverter,将两个颜色分量值转换为渐变笔刷。转换器只需获取两个颜色分量值,创建第三个未知分量值的渐变并返回它
- 衍生出三种具体的转换器:
,HSToBGradientConverter
,SBToHGradientConverter
BHToSGradientConverter
- 使用相应颜色组件和转换器上的多重绑定绑定滑块轨迹的背景
我假设您已经具备将HSB颜色转换为RGB颜色的能力。如果不是的话,这应该是第一个调用点,这样做的算法应该很容易找到(如果不是大叫,我可以把它们挖出来)。Hmm,我如何实现“创建一个正方形图像,然后计算每个像素的饱和度和亮度”这一部分我想我需要不止一个梯度。我也明白这个盒子就像你说的“从0饱和度到100%饱和度从左到右,从0亮度到100%亮度从上到下”假设饱和度和亮度从0变为1,那么如果有一个100乘100的正方形,则向右移动的每个像素的饱和度增加0.01,向下移动的每个像素的亮度增加0.01。因此,每个像素将具有色调
H
、饱和度0.01*x
和亮度0.01*y
的颜色。然后,在HSB空间中有一种完全特定的颜色,假设需要在RGB中进行渲染,则只需使用转换函数即可。也许我遗漏了一些关于这件事的困惑。。。