Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }