este es el código en c#:
int Paso = 4096;
int Signo = -1;
float[] EjeX = new float[4098];
float[] EjeY = new float[4098];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
int i;
Paso = 4096;
Signo = -1;
EjeX[1] = pictureBox1.ClientSize.Width / 4;
EjeX[4097] = 2 * pictureBox1.ClientSize.Height / 4;
EjeY[1] = EjeY[4097] = 2 * pictureBox1.ClientSize.Width / 4;
Random ra = new Random();
Thread.Sleep(1);
for (i = 1; i <= 13; i++)
{
Refresh();
GenerarDragon();//TColor(RGB(random(256), 0, 0)));
Paso /= 2;
Thread.Sleep(1);
//delay(1000);
}
}
public void GenerarDragon()
{
int i, j;
float dx, dy;
float x1,y1,x2,y2,x3,y3;
j = Paso / 2;
Random val = new Random();
Pen pluma = new Pen(Color.FromArgb(val.Next(256), val.Next(256), val.Next(256)));
//clase estatica de c# para dibujar graficos
Graphics g = pictureBox1.CreateGraphics();
for (i = 1; i <= 4096; i += Paso)
{
dx = EjeX[Paso + i] - EjeX[i];
dy = EjeY[Paso + i] - EjeY[i];
Signo *= -1;
EjeX[i + j] = EjeX[i] + (dx + (dy * Signo)) / 2;
EjeY[i + j] = EjeY[i] + (dy - (dx * Signo)) / 2;
x1 = EjeX[i];
y1 = EjeY[i];
x2 = EjeX[i + j];
y2 = EjeY[i + j];
x3 = EjeX[i + Paso];
y3 = EjeY[i + Paso];
g.DrawLine(pluma, x1, y1,x2,y2);
g.DrawLine(pluma, x2, y2,x3,y3);
Thread.Sleep(1);
}
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
this.Close();
}
este es el resultado de esta
aplicación
para descargar el programa fuente da click aqui
hola buenas tardes
ResponderEliminarcomo puedo hacer que el fractal dure creandose por unos segundos mas