NOTE: I UPDATED ALL DOWNLOAD LINK
Hello again!
Remember i did a javascript version of the Tree Fractal(with the help of rosettacode)
So iv'e built another version in C#
So here is the code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TreeFractal { public partial class Form1 : Form { static public Pen p = new Pen(Color.Black, 1); static public Graphics g; static public double deg_2_rad = Math.PI / 180.0; static public float globalH; static public float globalW; static readonly object _locky = new object(); public Form1() { InitializeComponent(); } private void drawTree(float x1, float y1, double angle, int depth, double angle1) { try { if (depth != 0) { float x2 = (float)(x1 + (Math.Cos(angle * deg_2_rad) * depth * 10.0)); float y2 = (float)(y1 + (Math.Sin(angle * deg_2_rad) * depth * 10.0)); lock (_locky) { this.Update(); p.Color = Color.FromArgb((depth * 255) % 16 * 14, (depth * 255) % 16 * 14, (depth * 255) % 128 * 2); g.DrawLine(p, x1, y1, x2, y2); } drawTree(x2, y2, angle - angle1, depth - 1, angle1); drawTree(x2, y2, angle + angle1, depth - 1, angle1); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void TreeCanvasLimits(float x1,float y1, double angle,int depth,double angle1) { if (depth != 0){ float x2 = (float)(x1 - (Math.Cos(angle * deg_2_rad) * depth * 10.0)); float y2 = (float)(y1 - (Math.Sin(angle * deg_2_rad) * depth * 10.0)); if (globalW > x2) { globalW = x2; } if(globalH < y2) { globalH = y2; } TreeCanvasLimits(x2, y2, angle - angle1, depth - 1,angle1); TreeCanvasLimits(x2, y2, angle + angle1, depth - 1,angle1); } } private void btnCreate_Click(object sender, EventArgs e) { g = this.CreateGraphics(); try { //globalH = 0; //globalW = 0; //TreeCanvasLimits(0, 0, -90.0, int.Parse(txtDep.Text), double.Parse(txtAngle.Text)); //this.Size = new Size((int)((globalW * (-2)) + 40), (int)((globalH + 60))); g.Clear(Color.White); drawTree((this.Width ) / 2, (this.Height - 150), -90.0, int.Parse(txtDep.Text), double.Parse(txtAngle.Text)); } catch(Exception exx) { MessageBox.Show(exx.ToString()); } } private void btnLoop_Click(object sender, EventArgs e) { try { g = this.CreateGraphics(); g.Clear(Color.White); for (int i = 0; i < 361; i++) { //g.Clear(Color.White); //p.Color = Color.FromArgb((int)(i/4),(int)(i/3), (int)(i/2)); //MessageBox.Show("before " + i.ToString()); this.SuspendLayout(); drawTree((this.Width) / 2, (this.Height - 150), -90.0, 10, (double)i); //System.Threading.Thread.Sleep(100); this.ResumeLayout(); Application.DoEvents(); //MessageBox.Show("after " + i.ToString()); this.Update(); } MessageBox.Show("Done"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } protected override void WndProc(ref Message m) { base.WndProc(ref m); this.Update(); } } }
and here is a download link
Download The Project (rar file)
Download The Project (rar file)