You are on page 1of 11

INTITUTO TECNOLOGICO DE ACAPULCO

INGENIERIA EN SISTEMAS COMPUTACIONALES

TOPICOZ AVANZADOS DE PROGRAMACION

PRACTICA:
DIBUJO EN C#

Alumno:
Aguirre Wences Liliana
13/03/15

INTRODUCCIN:

Se plantea desarrollar este dibujo con el cdigo aprendido en la prctica anterior implementando la mayor
cantidad de elementos posibles.
Gracias a la lectura y la explicacin sobre cmo trabajan las clases graficas en c# , mediante la prctica y
la idea de un dibujo sencillo pero que sea capaz de lograr una complejidad ptima para el desarrollo de
objetos y atributarlos con la exactitud de poder cumplir el dibujo que uno se plantee al inicio de la prctica.
En mi caso opte por un paisaje urbano con una dificultad de trmino medio para poder desarrollar de
manera rpida y aprender bastante sobre la prctica.
Desde el inicio, la mayor dificultad que encuentro es el poder localizar los elementos en los pixeles
ptimos y pintarse con las brochas necesarias.

DESARROLLO:

Mediante la construccin estructurada basado en el dibujo de los elementos de izquierda a derecha y de


elementos mas grandes a pequeos, primero constru todo el cdigo de los trazados en un evento clic, de
un botn denominado dibujo.
Al iniciar la practica opte por descargar una herramienta que sirvi para establecer los anchos y largos de
los elementos, la cual media en pixeles sobre la pantalla, de esa manera se me hizo rpido el poder
establecer los valores para rectngulos.
Mas sin embargo a la hora de posicionar el punto superior izquierdo si tuve que recurrir a la tcnica del
tanteo, todo esto utilizando un padrote principal sobre paint , en el cual me daba una idea de cul era el
punto en un lienzo del mismo tamao que el del picturebox.

Despus opte por crear otro botn denominado colorear , en el cual englobe toda la construccin de tipos
de brocas y mtodos de llenado fill , por un objeto graphics para poder aplicarle color a los elementos
trazados con anterioridad, por este motivo , algunos como los polgonos y curvaturas que no pude rellenar
en ese evento, opte por rellenarlos en el segmento anterior de cdigo.
Me funciono de buena manera, pero encontr problemas con la jerarqua de los eventos, por tal motivo
decid cambiar la interfaz y posicionar el botn colorear antes de los trazados para que el usuario disfrute
de manera jerrquica de la aparicin del dibujo.

Para finalizar opte por curvas y elipses para hacer detalles pequeos y poder ser similar al dibujo planteado
originalmente en otro botn y evento clics. De esta manera al presionar los bonotes veran la construccin
del dibujo como fue programada ( a excepcin del coloreado en diferente posicin) y complete agregando
el evento limpiar para que el usuario lo realice cuantas veces crea ptimo.

CONCLUSION:

Como se ve , no fue tan similar al deseado al inicio, mas sin embargo se mejoraron muchas cosas como
los colores y las formas gracias a las propiedades predestinadas del lenguaje y a los efectos del mismo
como los degrado y las curvaturas.
Algunos elementos faltantes fueron lneas en el edificio morado, bloques en el caf y las nubes del cielo.
En lo personal me gusto bastante realizar la prctica, pero an sigo sin poder organizarme con el tiempo
y responsabilidad y pro lo mismo no obtuve lo que deseaba.

ANEXOS:
CODIGO:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace Superduperdibujo
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender , EventArgs e )
{
}
private void Dibujon_Click(object sender, EventArgs e)
{
Pen LapizF = new Pen(Color.Black,1);
//rectangulo de la cafeteria
Pen LapizNegroN3 = new Pen(Color.Black, 3);
Graphics D = Lienzo.CreateGraphics();
D.SmoothingMode = SmoothingMode.HighQuality;
Rectangle rect = new Rectangle(30,36,226,250);
D.DrawRectangle(LapizNegroN3,rect);
//rectangulo de la casa
Rectangle rect2 = new Rectangle(270, 36, 120, 250);
D.DrawRectangle(LapizNegroN3, rect2);
//rectangulo de la chimenea

Rectangle rect3 = new Rectangle(345, 15, 20, 20);


D.DrawRectangle(LapizNegroN3, rect3);
//puntos de la banqueta
PointF[] Esqui = {
new Point(31, 289),
new Point(3,312),
new Point(400,312),
new Point(395,289)
};
D.DrawPolygon(LapizNegroN3,Esqui);
//pintar banqueta
SolidBrush BrushGris = new SolidBrush(Color.DarkSlateGray);
D.FillPolygon(BrushGris,Esqui);
//maceta sobre banqueta
PointF[] Mace = {
new Point(66,252),
new Point(88,252),
new Point(95,268),
new Point(77,280),
new Point(50,268)

};
D.DrawPolygon(LapizNegroN3, Mace);
SolidBrush BrushCafe = new SolidBrush(Color.SandyBrown);
D.FillPolygon(BrushCafe,Mace);
//Linea de contraste banqueta
Pen LapizColor = new Pen(Color.SlateGray, 10);
Point Puntoa = new Point(3,320);
Point puntob = new Point(400,320);
D.DrawLine(LapizColor,Puntoa,puntob);
//puertas
Rectangle rect4 = new Rectangle(182, 189, 55, 100);
D.DrawRectangle(LapizNegroN3, rect4);
Rectangle rect5 = new Rectangle(325, 188, 35, 100);
D.DrawRectangle(LapizNegroN3, rect5);

//ventaba cuadrada
Rectangle rect8 = new Rectangle(50, 86, 110, 100);
D.DrawRectangle(LapizNegroN3, rect8);

// ventanas circulares
D.DrawEllipse (LapizNegroN3,296, 64, 65, 80);
D.DrawEllipse(LapizNegroN3, 67, 95,80, 80);
//centro logotipo
D.DrawEllipse(LapizNegroN3, 72, 100, 70, 70);
///////detalles ventana puerta///////////////////////
Rectangle rect9 = new Rectangle(197, 229, 20, 10);
D.DrawRectangle(LapizNegroN3, rect9);
//trazado
Point puntos = new Point(210,215);
Point puntoss = new Point(197,229);
Point puntosss = new Point(210, 215);
Point puntossss = new Point(220, 230);
D.DrawLine(LapizNegroN3, puntos, puntoss);
D.DrawLine(LapizNegroN3,puntosss, puntossss);
//lineas de ventanas
Point punto1 = new Point(330,62);
Point punto2 = new Point(330,145);
Point punto3 = new Point(295,103);
Point punto4 = new Point(362,103);
D.DrawLine(LapizNegroN3,punto1 ,punto2);
D.DrawLine(LapizNegroN3, punto3,punto4);
///arcos para taza
SolidBrush BrushBla = new SolidBrush(Color.White);
Pen Blan = new Pen(Color.White, 7);
Rectangle deli = new Rectangle(175,78,59,59);
D.DrawArc(Blan, deli, 05,180);
Point puntoc = new Point(175,105);
Point puntod = new Point(233,105);
D.DrawLine(Blan,puntoc,puntod);
Point p1 = new Point(233, 105);
Point p2 = new Point(233, 150);

Point c1 = new Point(253,115);


Point c2 = new Point(233,110);
D.DrawBezier(Blan,p1,c1,p2,c2);
//teclado
Rectangle tecla = new Rectangle(82,120,50,25);
D.DrawRectangle(LapizNegroN3,tecla);
//teclas
Rectangle das = new Rectangle(87,125,40,15);
D.DrawRectangle(LapizF,das);
// lineas tecla

Point a= new Point (90,125);


Point b = new Point (90,140);
D.DrawLine(LapizF, a,b);
Point c = new Point (95,125);
Point d = new Point (95,140);
D.DrawLine(LapizF, c,d);
Point g = new Point (100,125);
Point f =new Point (100,140);
D.DrawLine(LapizF , g,f);
Point h = new Point (105,125);
Point i = new Point (105,140);
D.DrawLine(LapizF, h,i);
Point j= new Point (110,125);
Point k= new Point(110, 140);
D.DrawLine(LapizF,j,k);
Point l = new Point(115, 125);
Point m = new Point(115, 140);
D.DrawLine(LapizF, l, m);
Point n = new Point(120, 125);
Point o = new Point(120, 140);
D.DrawLine(LapizF, n, o);
Point w = new Point(123, 125);
Point x = new Point(123, 140);
D.DrawLine(LapizF, w, x);
//detalles de rectangulos
Point ga = new Point(100, 125);
Point fa= new Point(100, 130);
D.DrawLine(LapizNegroN3, ga, fa);
Point ha = new Point(105, 125);
Point ia = new Point(105, 130);
D.DrawLine(LapizNegroN3, ha, ia);

Point ja = new Point(110, 125);


Point ka = new Point(110, 130);
D.DrawLine(LapizNegroN3, ja, ka);
Point wa = new Point(123, 125);
Point xa = new Point(123, 130);
D.DrawLine(LapizNegroN3, wa, xa);

}
private void Colors_Click(object sender, EventArgs e)
{
Graphics F = Lienzo.CreateGraphics();
//rectangulo fondo
SolidBrush Cielo = new SolidBrush(Color.LightSkyBlue);
F.FillRectangle(Cielo, 3, 3, 400, 306);
SolidBrush BrushOscu = new SolidBrush(Color.Brown);

F.FillRectangle(BrushOscu, 30, 36, 226, 250);


SolidBrush BrusMora = new SolidBrush(Color.MediumPurple);
F.FillRectangle(BrusMora, 270, 36, 120, 250);
F.FillRectangle(BrusMora, 345, 15, 20, 20);
Rectangle rect4 = new Rectangle(182, 189, 55, 100);
LinearGradientBrush BrushDegra = new
LinearGradientBrush(rect4,Color.AliceBlue,Color.Blue,LinearGradientMode.Vertical);
F.FillRectangle(BrushDegra,rect4);
Rectangle rect5 = new Rectangle(325, 188, 35, 100);
F.FillRectangle(BrushDegra,rect5);
Rectangle rect8 = new Rectangle(50, 86, 110, 100);
F.FillRectangle(BrushDegra,rect8);
F.FillEllipse(BrushDegra, 296, 64, 65, 80);
SolidBrush BrushBlack = new SolidBrush(Color.Black);
F.FillEllipse(BrushBlack,67, 95, 80, 80);
SolidBrush BrushWhite = new SolidBrush(Color.LightSteelBlue);

SolidBrush BrushBla = new SolidBrush(Color.White);


F.FillEllipse(BrushWhite, 72, 100, 70, 70);
F.FillRectangle(BrushBlack, 82, 120, 50, 25);
F.FillRectangle(BrushBla, 87, 125, 40, 15);
F.FillRectangle(BrushBla, 197, 229, 20, 10);

}
private void Details_Click(object sender, EventArgs e)
{
Graphics L = Lienzo.CreateGraphics();
//Humo de la taza
Point p1 = new Point(200,78);
Point p2 = new Point(300,90);
Point c1 = new Point(150,82);
Point c2 = new Point(200,90);
Pen Blan = new Pen(Color.White, 5);
L.DrawBezier(Blan,p1,c1,p2,c2);
//
//hjas de la planta
//
Pen verde = new Pen(Color.ForestGreen, 5);
Rectangle hoja1 = new Rectangle(66,235,5,15);
L.DrawEllipse(verde,hoja1);
Rectangle hoja2 = new Rectangle(75, 235, 5, 15);
L.DrawEllipse(verde, hoja2);
Rectangle hoja3 = new Rectangle(87, 235, 5, 15);
L.DrawEllipse(verde, hoja3);

}
}
}

You might also like