获取两种颜色HEX参考或RGB之间的颜色

可能重复:
.NET中3种颜色之间的颜色插值

我一直在尝试使用C#获取颜色的类别列表:

Red: 255, 69, 0 255, 99, 71 etc.. Green: 0, 250, 154 143, 188, 139 etc... 

到目前为止,我一直很不成功。 理想情况下,我想要的是提供两个HEX refs或RGB refs并在这两个引用之间获得10种颜色的列表。 这可能在C#中吗?

编辑

发现这个… http://meyerweb.com/eric/tools/color-blend/现在将js转换为c#。 完成时会发布。

我不知道内置function可以帮助你,但你可以自己做。

只要使用3个数字(R,G,B)定义颜色,就可以采用两种颜色:

 (R1,G1,B1) (R2,G2,B2) 

然后在对之间划分差异并按间隔产生数字。

 int numberOfIntervals = 10; //or change to whatever you want. var interval_R = (R2 - R1) / numberOfIntervals; var interval_G = (G2 - G1) / numberOfIntervals; var interval_B = (B2 - B1) / numberOfIntervals; var current_R = R1; var current_G = G1; var current_B = B1; for (var i = 0; i <= numberOfIntervals; i++) { var color = Color.FromRGB(current_R, current_G, current_B); //do something with color. //increment. current_R += interval_R; current_G += interval_G; current_B += interval_B; } 

我没有编译代码,但你明白了。

您正在寻找的是插值 。 在这种特定情况下,您需要在两个关键点之间插入数据。

由于插值是编程时非常常见的场景,我为它编写了一个通用的解决方案,可以轻松地使用线性或甚至基数样条插值在两个或多个关键点之间进行插值 。

使用我的库你可以计算中间颜色如下:

 var keyPoints = new CumulativeKeyPointCollection( new ColorInterpolationProvider() ); keyPoints.Add( Color.FromArgb(0, 250, 154) ); keyPoints.Add( Color.FromArgb(143, 188, 139) ); var linear = new LinearInterpolation( keyPoints ); // Eg to get a color halfway the two other colors. Color colorHalfway = linear.Interpolate( 0.5 ); 

您必须通过从AbstractInterpolationProvider扩展来实现ColorInterpolationProvider ,但这非常简单,可以在我的博客文章中找到更多信息。

此示例使用Media.Color类,但您也可以通过传递不同的插值提供程序来支持任何其他Color类。