Ayuda con un dibujo en C#

NewBorn

Bovino adicto
#1
Hola bakunos, espero que esten bien, yo aki dando topes por falta de condicion en el C#, bueno he aqui mi problema, espero me ayuden u orienten, tengo ke ntregarlo para mañana y ya sé que muxos expertos dirán que cosa tan facil y no la puedo hacer, pero ps ya ven ke a veces nos bloqueamos xD

Bueno el chiste es que en un picturebox tengo ke graficar con lineas la siguiente figura


para esto ya lo hice de la forma llamada fuerza bruta, o sea, cree punto por punto y fui uniendo linea por linea, lo que no he podido hacer por falta de practica y supongo algo de ingenio es aplicar el codigo en un ciclo for, o algo asi. Mi codigo es simple y el siguiente:

private void button2_Click(object sender, EventArgs e)
{
Point p1 = new Point(-200, 200);
Point p2 = new Point(-200, -200);
Point p3 = new Point(200, -200);
Point p4 = new Point(200, 200);

Point a0 = new Point(-200, 200);
Point a00 = new Point(-200, 180);
Point a1 = new Point(-200, 160);
Point a01 = new Point(-200, 140);
Point a2 = new Point(-200, 120);
Point a02 = new Point(-200, 100);
Point a3 = new Point(-200, 80);
Point a03 = new Point(-200, 60);
Point a4 = new Point(-200, 40);
Point a04 = new Point(-200, 20);
Point a5 = new Point(-200, 0);
Point a05 = new Point(-200, -20);
Point a6 = new Point(-200, -40);
Point a06 = new Point(-200, -60);
Point a7 = new Point(-200, -80);
Point a07 = new Point(-200, -100);
Point a8 = new Point(-200, -120);
Point a08 = new Point(-200, -140);
Point a9 = new Point(-200, -160);
Point a09 = new Point(-200, -180);
Point a10 = new Point(-200, -200);

Point b0 = new Point(-200, -200);
Point b00 = new Point(-180, -200);
Point b1 = new Point(-160, -200);
Point b01 = new Point(-140, -200);
Point b2 = new Point(-120, -200);
Point b02 = new Point(-100, -200);
Point b3 = new Point(-80, -200);
Point b03 = new Point(-60, -200);
Point b4 = new Point(-40, -200);
Point b04 = new Point(-20, -200);
Point b5 = new Point(0, -200);
Point b05 = new Point(20, -200);
Point b6 = new Point(40, -200);
Point b06 = new Point(60, -200);
Point b7 = new Point(80, -200);
Point b07 = new Point(100, -200);
Point b8 = new Point(120, -200);
Point b08 = new Point(140, -200);
Point b9 = new Point(160, -200);
Point b09 = new Point(180, -200);
Point b10 = new Point(200, -200);

g.DrawLine(lap, p1, p2);
g.DrawLine(lap, p2, p3);
g.DrawLine(lap, p3, p4);
g.DrawLine(lap, p4, p1);

g.DrawLine(lap, a0, b00);
Thread.Sleep(150);
g.DrawLine(lap, a00, b1);
Thread.Sleep(150);
g.DrawLine(lap, a1, b01);
Thread.Sleep(150);
g.DrawLine(lap, a01, b2);
Thread.Sleep(150);
g.DrawLine(lap, a2, b02);
Thread.Sleep(150);
g.DrawLine(lap, a02, b3);
Thread.Sleep(150);
g.DrawLine(lap, a3, b03);
Thread.Sleep(150);
g.DrawLine(lap, a03, b4);
Thread.Sleep(150);
g.DrawLine(lap, a4, b04);
Thread.Sleep(150);
g.DrawLine(lap, a04, b5);
Thread.Sleep(150);
g.DrawLine(lap, a5, b05);
Thread.Sleep(150);
g.DrawLine(lap, a05, b6);
Thread.Sleep(150);
g.DrawLine(lap, a6, b06);
Thread.Sleep(150);
g.DrawLine(lap, a06, b7);
Thread.Sleep(150);
g.DrawLine(lap, a7, b07);
Thread.Sleep(150);
g.DrawLine(lap, a07, b8);
Thread.Sleep(150);
g.DrawLine(lap, a8, b08);
Thread.Sleep(150);
g.DrawLine(lap, a08, b9);
Thread.Sleep(150);
g.DrawLine(lap, a9, b09);
Thread.Sleep(150);
g.DrawLine(lap, a09, b10);
Thread.Sleep(150);
}

Espero me puedan orientar un poco, y me da mucha pena pedir una ayuda como esta T.T pero ps ando con cada cosa en la cabeza que aun no desifro algo ke puede ser muy facil, saludos, espero alguna ayuda o comentario, suerte
 

Zephyros

Bovino de la familia
#2
Necesitas una función que ubique en el Canvas los puntos resultantes de la función matemática, de esa manera pondrá los puntos por sí misma.
 

malvadomx

Bovino maduro
#3
creo que no es muy dificil, mira, lo que podrias hacer es lo siguiente, supongamos que el eje y y x miden 40 centimetros, supongamos que quieres una linea cada 2 centimetros. Bien, empieza un ciclo que aumente de 2 en 2 el eje de las X, traza una linea en cada iteracion desde esa posicion del eje X hasta el total de eje Y menos lo que llevas en cada iteracion del ciclo en el eje de X. Osea... si el eje de x y y es de 40, tons, la primera iteracion x = 2, y = 40 - 2. y ahi trazas una linea, y la siguiente es x = 4, y = 40 - 4.. etc etc
 
#4
Solucion al Problema:

En el evento paint del PictureBox pon este chacho de codigo

for (int i = 400; i >= 0; i -= 5)
{
Point x = new Point(i, 400);
Point y = new Point(0, 0 + i);
e.Graphics.DrawLine(new Pen(Color.Blue), y, x);
//System.Threading.Thread.Sleep(150);
}
 
#6
Buen codigo!

Solucion al Problema:

En el evento paint del PictureBox pon este chacho de codigo

for (int i = 400; i >= 0; i -= 5)
{
Point x = new Point(i, 400);
Point y = new Point(0, 0 + i);
e.Graphics.DrawLine(new Pen(Color.Blue), y, x);
//System.Threading.Thread.Sleep(150);
}
Lo primero que me vino a la mente era usar un array para la info de los puntos y despues unirlos con un For Loop, pero esta solucion me parece mas logica.
Cierto, la programacion es pura logica aplicada.
Se agradece el codigo! Saludos!
:nerd:
 
Arriba