您正在寻找的是所谓的插值。在这种特殊情况下,您需要在两个关键点之间插入数据。
由于插值是编程时非常常见的场景,因此我为它编写了一个通用解决方案,轻松地允许您使用线性甚至基数样条插值在两个或多个关键点之间进行插值。
使用我的库,您可以按如下方式计算中间颜色:
var keyPoints = new CumulativeKeyPointCollection<Color, double>(
new ColorInterpolationProvider() );
keyPoints.Add( Color.FromArgb(0, 250, 154) );
keyPoints.Add( Color.FromArgb(143, 188, 139) );
var linear = new LinearInterpolation<Color, double>( keyPoints );
// E.g. to get a color halfway the two other colors.
Color colorHalfway = linear.Interpolate( 0.5 );
您必须ColorInterpolationProvider
通过扩展 from来实现AbstractInterpolationProvider<Color, double>
,但这很简单,更多信息可以在我的博客文章中找到。
此示例使用Media.Color
该类,但您也可以Color
通过传递不同的插值提供程序来支持任何其他类。