private byte[] GetImageData(ColorPoint[] points)
        {
            ColorPoint last = points.Last();
            int size = last.Position + 1;

            using (var ms = new MemoryStream())
            {
                using (var bmp = new Bitmap(1, size, PixelFormat.Format32bppArgb))
                {
                    using (Graphics g = Graphics.FromImage(bmp))
                    {
                        for (int i = 1; i < points.Length; i++)
                        {
                            var rect = new Rectangle(0, points[i - 1].Position, 1, points[i].Position);
                            var brush = new LinearGradientBrush(
                                rect,
                                points[i - 1].Color,
                                points[i].Color,
                                LinearGradientMode.Vertical);
                            g.FillRectangle(brush, rect);
                        }

                        bmp.SetPixel(0, last.Position, last.Color);
                        bmp.Save(ms, ImageFormat.Png);
                    }
                }
                return ms.ToArray();
            }
        }