「ASP.NET MVC 5でサーバーサイドで動的に生成した画像を返す - 酢ろぐ!」の応用例です。……といってもGraphicsクラスを使った描画と違いはありませんね。
using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Web.Mvc; namespace Test1.Controllers { public class Graphics2Controller : Controller { private Bitmap GetBackgroundImage(int width, int height, Color startColor, Color endColor) { var image = new Bitmap(width, height); using (var g = Graphics.FromImage(image)) { g.SmoothingMode = SmoothingMode.HighQuality; // グラデーション描画用のブラシを作成 var brush = new LinearGradientBrush(new Point(0, height), new Point(width, 0), startColor, endColor); // 画像の背景を描画する g.FillRectangle(brush, new Rectangle(0, 0, width, height)); } return image; } public ActionResult Index() { var width = 640; var height = 300; var startColor = Color.FromArgb(233, 19, 29); var endColor = Color.FromArgb(235, 115, 52); // 画像を生成する var ms = new MemoryStream(); using (var image = GetBackgroundImage(width, height, startColor, endColor)) { // 描画したビットマップをPNGとしてストリームへ保存する image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; } // サーバーサイドで実装したPNG画像を返す return new FileStreamResult(ms, "image/png"); } } }
Indexメソッド
が実行されると下図のような画像を表示します。