示例#1
0
        private Color GetColor(float v)
        {
            if (v <= gradientStops.Min(a => a.Offset))
            {
                return(gradientStops.WithMin(a => a.Offset).Color);
            }

            if (v >= gradientStops.Max(a => a.Offset))
            {
                return(gradientStops.WithMax(a => a.Offset).Color);
            }

            var par = GradientStops.Select((gr, i) => new { gr, i }).FirstOrDefault(p => p.gr.Offset > v);

            float v1 = (float)GradientStops[par.i - 1].Offset;

            float v2 = (float)GradientStops[par.i].Offset;

            float vx = (v - v1) / (v2 - v1);

            return(GradientStops[par.i - 1].Color * (1 - vx) + GradientStops[par.i].Color * (vx));
        }