C# 在3个独立的轨迹栏之间拆分最大值

C# 在3个独立的轨迹栏之间拆分最大值,c#,.net,winforms,C#,.net,Winforms,这可能很简单,也可能是一个漫长的一周,我的脑子就是想不出答案。不管怎样,我都找不到答案 我有一个由4种颜色组成的颜色数组 _sourceLookupColorRange = new Color[128]; 现在它们被平均地分开了。颜色1和颜色2之间的增量为42,颜色2和颜色3之间的增量为43,颜色3和颜色4之间的增量为43 Color set1 = Color.Green; Color set3 = Color.Yellow; Color set5 = Colo

这可能很简单,也可能是一个漫长的一周,我的脑子就是想不出答案。不管怎样,我都找不到答案

我有一个由4种颜色组成的颜色数组

_sourceLookupColorRange = new Color[128];
现在它们被平均地分开了。颜色1和颜色2之间的增量为42,颜色2和颜色3之间的增量为43,颜色3和颜色4之间的增量为43

Color set1 = Color.Green;
        Color set3 = Color.Yellow;
        Color set5 = Color.Orange;
        Color set6 = Color.Red;

        //find the interpolated values between the colors
        var res1 = ColorInterpolator.ReturnColorSet(42, set1, set3, 0);
        var res2 = ColorInterpolator.ReturnColorSet(43, set3, set5, 0);
        var res3 = ColorInterpolator.ReturnColorSet(43, set5, set6, 0);

        //copy the interpolated colors to the main source lookup array
        Array.Copy(res1, 0, _sourceLookupColorRange, 0, 42);
        Array.Copy(res2, 0, _sourceLookupColorRange, 42, 43);
        Array.Copy(res3, 0, _sourceLookupColorRange, 85, 43);
我想让用户能够拖动滑块来设置颜色范围之间的更多“权重”。前两个范围可能有20个,第三个范围可能有68个。我想使用3个轨迹栏,以便于在用户界面中使用,但需要帮助如何让它工作,或者如果有一个如何做到这一点的例子


谢谢

我最后使用了一个比率。颜色范围除以3个轨迹条的值之和得到了一个比率。然后,我将每个轨迹栏值乘以这个比率,得到所需的三个缩放结果。

如果使用WinForms,请搜索轨迹栏控件。有很多关于如何使用它的教程。您只需监听滚动事件并将当前值分配给变量。