public CalcResult Render(CalcRequest request) { var image = new Bitmap(request.RealSteps, request.ImagSteps, PixelFormat.Format24bppRgb); ClearBitmap(image); var dx = (request.ToCorner.Real - request.FromCorner.Real) / request.RealSteps; var dy = (request.ToCorner.Imaginary - request.FromCorner.Imaginary) / request.ImagSteps; double x; double y; int count; for (int gx = 0; gx < request.RealSteps; gx++) { x = request.FromCorner.Real + gx * dx; for (int gy = 0; gy < request.ImagSteps; gy++) { y = request.FromCorner.Imaginary + gy * dy; count = ComputeCount(new Complex(x, y)); image.SetPixel(gx, gy, colors[count % NumColors]); } } AddCaption(image, request); var result = new CalcResult { Image = image }; return(result); }
private void AddCaption(Bitmap image, CalcRequest request) { var message = $"({request.FromCorner.Real}, {request.FromCorner.Imaginary}) - ({request.ToCorner.Real}, {request.ToCorner.Imaginary})"; Graphics g = Graphics.FromImage(image); g.SmoothingMode = SmoothingMode.AntiAlias; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.DrawString(message, new Font("Tahoma", 8), Brushes.White, 5.0f, 5.0f); g.Flush(); }