利用C#实现分形树的绘制

前几天老师让我用递归的方法画个分形树给她看,偷偷记录一下自己的分形树,嘿嘿!
话不多说,贴个代码。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace 分形树
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
///
/// 递归画分形树
///
/// 树根的位置
/// 树枝的角度
/// 树枝的长度
/// 树枝的宽度
/// Graphics对象
private void Tree(Point O,double angle, double length, float width,Graphics g)
{
if (width < 1)
width = 1;
if(length<10)//差不多树枝尽头的时候停止绘制
{
return;
}
Point p = new Point(O.X+(int)(length * Math.Cos(angle)), O.Y-(int)(length * Math.Sin(angle)));
Pen pen = new Pen(Brushes.Red,width);
g.DrawLine(pen, O, p);
Tree(p, angle + Math.PI / 18, length * 0.8, width * 0.8f, g);//递归画左半个,这里可以修改参数,画出不同形状的树
Tree(p, angle - Math.PI / 18, length * 0.8, width * 0.8f, g);//递归画右半个
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Point O = new Point(this.Width / 2, this.Height-100);//取窗体最下边靠上面点的中间位置作树根点
Graphics g = this.CreateGraphics();//获取Graphics的对象
Tree(O,Math.PI/2,100,10, g);//画分形树
}
}
}

下面是画出的效果图:
利用C#实现分形树的绘制
利用C#实现分形树的绘制
利用C#实现分形树的绘制
利用C#实现分形树的绘制