这里用的是GDI来绘图,采用双缓冲.

以下是Form窗体内的所有代码:

分形算法->跳舞的小树using System;
分形算法->跳舞的小树
using System.Drawing;
分形算法->跳舞的小树
using System.Collections;
分形算法->跳舞的小树
using System.ComponentModel;
分形算法->跳舞的小树
using System.Windows.Forms;
分形算法->跳舞的小树
using System.Data;
分形算法->跳舞的小树
using System.Drawing.Drawing2D;
分形算法->跳舞的小树
using System.Threading;
分形算法->跳舞的小树
using System.IO;
分形算法->跳舞的小树
分形算法->跳舞的小树
namespace 分形
{

分形算法->跳舞的小树    
/// Form1 的摘要说明。
分形算法->跳舞的小树    
/// </summary>
分形算法->跳舞的小树    public class frmAction : System.Windows.Forms.Form
{

分形算法->跳舞的小树        
/// 必需的设计器变量。
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        private System.ComponentModel.Container components = null;
分形算法->跳舞的小树
分形算法->跳舞的小树        SolidBrush brush
= new SolidBrush(Color.Black);
分形算法->跳舞的小树        
private System.Windows.Forms.Button btnPlay;
分形算法->跳舞的小树        
private System.Windows.Forms.Button btnStop;
分形算法->跳舞的小树        Pen pen;
分形算法->跳舞的小树        
public frmAction()
{
分形算法->跳舞的小树            
//
分形算法->跳舞的小树            
// Windows 窗体设计器支持所必需的
分形算法->跳舞的小树            
//
分形算法->跳舞的小树
            InitializeComponent();
分形算法->跳舞的小树            Init();
分形算法->跳舞的小树            
//
分形算法->跳舞的小树            
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
分形算法->跳舞的小树            
//
分形算法->跳舞的小树
        }
分形算法->跳舞的小树

分形算法->跳舞的小树        
/// 清理所有正在使用的资源。
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        protected override void Dispose( bool disposing )
{
分形算法->跳舞的小树            
if( disposing )
{
分形算法->跳舞的小树                
if (components != null
{
分形算法->跳舞的小树                    components.Dispose();
分形算法->跳舞的小树                }

分形算法->跳舞的小树            }

分形算法->跳舞的小树            
base.Dispose( disposing );
分形算法->跳舞的小树        }

分形算法->跳舞的小树


分形算法->跳舞的小树        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
分形算法->跳舞的小树        
/// 此方法的内容。
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        private void InitializeComponent()
{
分形算法->跳舞的小树            
this.btnPlay = new System.Windows.Forms.Button();
分形算法->跳舞的小树            
this.btnStop = new System.Windows.Forms.Button();
分形算法->跳舞的小树            
this.SuspendLayout();
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树            
// btnPlay
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树
            this.btnPlay.Location = new System.Drawing.Point(80344);
分形算法->跳舞的小树            
this.btnPlay.Name = "btnPlay";
分形算法->跳舞的小树            
this.btnPlay.Size = new System.Drawing.Size(9624);
分形算法->跳舞的小树            
this.btnPlay.TabIndex = 0;
分形算法->跳舞的小树            
this.btnPlay.Text = "跳舞哦!";
分形算法->跳舞的小树            
this.btnPlay.Click += new System.EventHandler(this.btnPlay_Click);
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树            
// btnStop
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树
            this.btnStop.Enabled = false;
分形算法->跳舞的小树            
this.btnStop.Location = new System.Drawing.Point(320344);
分形算法->跳舞的小树            
this.btnStop.Name = "btnStop";
分形算法->跳舞的小树            
this.btnStop.Size = new System.Drawing.Size(8824);
分形算法->跳舞的小树            
this.btnStop.TabIndex = 1;
分形算法->跳舞的小树            
this.btnStop.Text = "停下来!";
分形算法->跳舞的小树            
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树            
// frmAction
分形算法->跳舞的小树            
// 
分形算法->跳舞的小树
            this.AutoScaleBaseSize = new System.Drawing.Size(614);
分形算法->跳舞的小树            
this.ClientSize = new System.Drawing.Size(480390);
分形算法->跳舞的小树            
this.Controls.Add(this.btnStop);
分形算法->跳舞的小树            
this.Controls.Add(this.btnPlay);
分形算法->跳舞的小树            
this.Name = "frmAction";
分形算法->跳舞的小树            
this.Text = "Form1";
分形算法->跳舞的小树            
this.Closing += new System.ComponentModel.CancelEventHandler(this.frmAction_Closing);
分形算法->跳舞的小树            
this.Load += new System.EventHandler(this.Form1_Load);
分形算法->跳舞的小树            
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
分形算法->跳舞的小树            
this.ResumeLayout(false);
分形算法->跳舞的小树
分形算法->跳舞的小树        }

分形算法->跳舞的小树        
#endregion
分形算法->跳舞的小树

分形算法->跳舞的小树        
/// 应用程序的主入口点。
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        [STAThread]
分形算法->跳舞的小树        
static void Main() 
{
分形算法->跳舞的小树            Application.Run(
new frmAction());
分形算法->跳舞的小树        }

分形算法->跳舞的小树        
private void Form1_Load(object sender, System.EventArgs e)
            
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        
private void RePaint()

分形算法->跳舞的小树            
while (true)
{
分形算法->跳舞的小树                paint(
this.CreateGraphics());
分形算法->跳舞的小树            }
            
分形算法->跳舞的小树        }

分形算法->跳舞的小树

分形算法->跳舞的小树        
/// 画叶子
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        
/// <param name="g"></param>
分形算法->跳舞的小树        
/// <param name="x"></param>
分形算法->跳舞的小树        
/// <param name="y"></param>
分形算法->跳舞的小树        
/// <param name="L"></param>
分形算法->跳舞的小树        
/// <param name="a"></param>
分形算法->跳舞的小树        
/// <param name="B"></param>
分形算法->跳舞的小树        
/// <param name="C"></param>
分形算法->跳舞的小树        public void DrawLeaf(Graphics g,double x,double y,
分形算法->跳舞的小树            
double L, double a,float B,float C)
{    
分形算法->跳舞的小树            
double x1,x2,x1L,x2L,x2R,x1R,
分形算法->跳舞的小树                y1,y2,y1L,y2L,y2R,y1R;
分形算法->跳舞的小树       
分形算法->跳舞的小树            
float s1 = 2;
分形算法->跳舞的小树            
float s2 = 3;
分形算法->跳舞的小树            
float s3 = 1.1f;
分形算法->跳舞的小树
分形算法->跳舞的小树            
if(L > s1)
{
分形算法->跳舞的小树                x2 
= x + L * Math.Cos(a * PI);
分形算法->跳舞的小树                y2 
= y + L * Math.Sin(a * PI);
分形算法->跳舞的小树                x2R 
= x2 + L / s2 * Math.Cos((a + B) * PI);
分形算法->跳舞的小树                y2R 
= y2 + L / s2 * Math.Sin((a + B) * PI);
分形算法->跳舞的小树                x2L 
= x2 + L / s2 * Math.Cos((a - B) * PI);
分形算法->跳舞的小树                y2L 
= y2 + L / s2 * Math.Sin((a - B) * PI);
分形算法->跳舞的小树  
分形算法->跳舞的小树                x1 
= x + L / s2 * Math.Cos(a * PI);
分形算法->跳舞的小树                y1 
= y + L / s2 * Math.Sin(a * PI);
分形算法->跳舞的小树                x1L 
= x1 + L / s2 * Math.Cos((a - B) * PI);
分形算法->跳舞的小树                y1L 
= y1 + L / s2 * Math.Sin((a - B) * PI);
分形算法->跳舞的小树                x1R 
= x1 + L / s2 * Math.Cos((a + B) * PI);
分形算法->跳舞的小树                y1R 
= y1 + L / s2 * Math.Sin((a + B) * PI);
分形算法->跳舞的小树             
分形算法->跳舞的小树                g.DrawLine(pen,(
int) x, (int) y, (int) x2, (int) y2);
分形算法->跳舞的小树                g.DrawLine(pen,(
int) x2, (int) y2, (int) x2R, (int) y2R);
分形算法->跳舞的小树                g.DrawLine(pen,(
int) x2, (int) y2, (int) x2L, (int) y2L);
分形算法->跳舞的小树                g.DrawLine(pen,(
int) x1, (int) y1, (int) x1L, (int) y1L); 
分形算法->跳舞的小树                g.DrawLine(pen,(
int) x1, (int) y1, (int) x1R, (int) y1R);
分形算法->跳舞的小树          
分形算法->跳舞的小树                DrawLeaf(g, x2, y2, L 
/ s3, a + C,B,C);
分形算法->跳舞的小树                DrawLeaf(g, x2R, y2R, L 
/ s2, a + B,B,C);
分形算法->跳舞的小树                DrawLeaf(g, x2L, y2L, L 
/ s2, a - B,B,C);
分形算法->跳舞的小树                DrawLeaf(g, x1L, y1L, L 
/ s2, a - B,B,C);
分形算法->跳舞的小树                DrawLeaf(g, x1R, y1R, L 
/ s2, a + B,B,C);   
分形算法->跳舞的小树            }

分形算法->跳舞的小树        }

分形算法->跳舞的小树

分形算法->跳舞的小树        
/// 绘制图形
分形算法->跳舞的小树        
/// </summary>
分形算法->跳舞的小树        
/// <param name="g"></param>
分形算法->跳舞的小树        public void paint(Graphics g)
{        
分形算法->跳舞的小树            
if (dstatus) 
{
分形算法->跳舞的小树                D 
+= 0.2f;
分形算法->跳舞的小树                
if (D>=10) dstatus = false;
分形算法->跳舞的小树            }

分形算法->跳舞的小树            
else 
{
分形算法->跳舞的小树                D 
-= 0.2f;
分形算法->跳舞的小树                
if (D<=-10) dstatus = true;
分形算法->跳舞的小树            }

分形算法->跳舞的小树
分形算法->跳舞的小树            
if (K<60) K=K+0.2f;
分形算法->跳舞的小树
分形算法->跳舞的小树            
//清除缓冲内的图形
分形算法->跳舞的小树
            offscreenbuffer.Clear(Color.White);
分形算法->跳舞的小树     
分形算法->跳舞的小树            
//在offscreenbuffer中画树;
分形算法->跳舞的小树
            DrawLeaf(offscreenbuffer,20030030,270,K,D);
分形算法->跳舞的小树            
分形算法->跳舞的小树            
//将缓冲画出来
分形算法->跳舞的小树
            g.DrawImage(offscreenimage,0,0);
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        
public void Init()

分形算法->跳舞的小树
//            //创建缓冲区内的图形
分形算法->跳舞的小树
            offscreenimage= new Bitmap(this.Width,this.Height);
分形算法->跳舞的小树
分形算法->跳舞的小树            
//得到g;
分形算法->跳舞的小树
            offscreenbuffer=Graphics.FromImage(offscreenimage);
分形算法->跳舞的小树            pen 
= new Pen(brush,1);
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        
float D=-10;//树的弯曲角度C
分形算法->跳舞的小树
        float K=40;//树杈的伸展角度B
分形算法->跳舞的小树
        bool dstatus = true;
分形算法->跳舞的小树        
public static readonly double PI = Math.PI / 180;
分形算法->跳舞的小树        Bitmap offscreenimage
=null;    //缓冲区中的图形
分形算法->跳舞的小树
        Graphics offscreenbuffer=null;  //缓存中的g
分形算法->跳舞的小树
        MemoryStream stream = new MemoryStream();
分形算法->跳舞的小树
分形算法->跳舞的小树        
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
分形算法->跳舞的小树            
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        Thread thread;
分形算法->跳舞的小树        
private void btnPlay_Click(object sender, System.EventArgs e)
{
分形算法->跳舞的小树            thread 
= new Thread(new ThreadStart(RePaint));
分形算法->跳舞的小树            thread.Start();
分形算法->跳舞的小树            btnPlay.Enabled 
= false;
分形算法->跳舞的小树            btnStop.Enabled 
= true;
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        
private void btnStop_Click(object sender, System.EventArgs e)
{
分形算法->跳舞的小树            thread.Suspend();
分形算法->跳舞的小树            btnStop.Enabled 
= false;
分形算法->跳舞的小树            btnPlay.Enabled 
= true;
分形算法->跳舞的小树        }

分形算法->跳舞的小树
分形算法->跳舞的小树        
private void frmAction_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
分形算法->跳舞的小树            
if (thread.ThreadState==ThreadState.Running)
{
分形算法->跳舞的小树                thread.Abort();
分形算法->跳舞的小树            }

分形算法->跳舞的小树
分形算法->跳舞的小树            Application.ExitThread();
分形算法->跳舞的小树        }

分形算法->跳舞的小树    }

分形算法->跳舞的小树}

分形算法->跳舞的小树

相关文章:

  • 2021-06-27
  • 2021-06-27
  • 2021-11-21
  • 2022-02-19
  • 2022-12-23
  • 2021-06-26
  • 2022-02-26
  • 2021-06-21
猜你喜欢
  • 2021-04-09
  • 2021-05-24
  • 2021-08-12
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案