渐变颜色生成算法

        /// <summary>
        /// 生成颜色条Item
        /// </summary>
        private List<Color> GenColorBarItem(Color startColor,Color endColor)
        {
            
            List<Color> colorList = new List<Color>();
            Color sourceColor = startColor;
            Color destColor = endColor;
            int redSpace = destColor.R - sourceColor.R;
            int greenSpace = destColor.G - sourceColor.G;
            int blueSpace = destColor.B - sourceColor.B;
            
            for (int i = 0; i <= 200; i++)
            {
                Color vColor = Color.FromArgb(
                    sourceColor.R + (int)((double)i / 200 * redSpace),
                    sourceColor.G + (int)((double)i / 200 * greenSpace),
                    sourceColor.B + (int)((double)i / 200 * blueSpace)
                );
                colorList.Add(vColor);
            }
            return colorList;
        }
        /// <summary>
        /// 生成总色条
        /// </summary>
        /// <returns></returns>
        private List<Color> GenColorBar()
        {
            //蓝-绿-黄-橘-红
            List<Color> colorList = new List<Color>();
            colorList.AddRange(GenColorBarItem(Color.Blue, Color.Green));
            colorList.AddRange(GenColorBarItem(Color.Green, Color.Yellow));
            colorList.AddRange(GenColorBarItem(Color.Yellow, Color.Orange));
            colorList.AddRange(GenColorBarItem(Color.Orange, Color.Red));
            for (int i =0;i<colorList.Count;i++)
            {
                g.DrawLine(new Pen(colorList[i]), new Point(10 + i, 150), new Point(10 + i, 200));
            }
            return colorList;
        }

自定义生成的颜色,分辨率。

如图

posted @ 2020-01-16 14:43  回忆的忆  阅读(846)  评论(0编辑  收藏  举报