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(); } }