风轻云淡愿君赏,消尽烦忧心亮敞。夏去秋来添衣裳,一声问候祝安康!

C# 分形

//C# 分形Demo

Random rm;
        static Graphics g;  //画板
        static Bitmap bim;  //绘画图像
        static Pen pen;     //笔刷
        private void Form4_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
           
            bim = new Bitmap(this.Width, this.Height);
            g = Graphics.FromImage(bim);
            //设置背景色
            g.Clear(Color.DarkGray);
            this.BackgroundImage = bim;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //抗锯齿
            rm = new Random();
            drawTree(new Point(ClientSize.Width / 2, ClientSize.Height), Math.PI / 2, 100, 10);
        }
 /// <summary>
        /// </summary>
        /// <param name="n">分支次数</param>
        /// <param name="point">划线位置</param>
        /// <param name="angle">偏转角度</param>
        /// <param name="length">线长</param>
        /// <param name="width">线宽</param>
        void drawTree(Point point, double angle, double length, float width)
        {
            if (length<=10)
                return;
           int cRed = rm.Next(0, 100);
           int cGreen = rm.Next(0, 256);
           int cBlue = rm.Next(0, 100);
            Color color = Color.FromArgb(cRed, cGreen, cBlue);
            Point p = new Point(point.X + (int)(length * Math.Cos(angle)), point.Y - (int)(length * Math.Sin(angle)));
            Pen pen = new Pen(color, width);
            g.DrawLine(pen, point,p);
            drawTree(p, angle + Math.PI / 10, length * 0.9, width * 0.8f);//递归画左半个
            drawTree(p, angle - Math.PI / 10, length * 0.8, width * 0.8f);//递归画右半个
        }

 

 

drawTree(p, angle + Math.PI / 10, length * 0.9, width * 0.8f);//递归画左半个
drawTree(p, angle - Math.PI / 50, length * 0.9, width * 0.8f);//递归画右半个

 

 

 

 

 

 

posted on 2021-10-09 16:28  荣林  阅读(111)  评论(0)    收藏  举报

导航