Vous êtes sur la page 1sur 11

Departamento: Ciencias de la Computacin

Carrera: Ingeniera en Sistemas

Materia: Computacin Grafica


Fecha de entrega: 30 de Abril del 2015
Tema: Deber 2
Objetivo:
Fortalecer los conocimientos adquiridos en la clase, sobre los inicios
de C#.
Marco Terico:
Al usar las variables damos un paso mas en lo que es programacin
grafica, podremos usar para hacer clculos o dar condiciones, lo
fundamental de este programa ser centrarnos en lo que es el calculo
del rea de un triangulo cualquiera, para eso usaremos las formulas
matemticas que son
rea:

Altura:

En el programa se usaran textbox, label, botones, gruopbox y


picturebox.

En el textbox estar para el ingreso de coordenadas y su validacin


para que solo acepte numero, dando un mejor funcionamiento al
cdigo.
El label se usara para mostrar las respuestas de los clculos y
descripciones del resultado.
Botones para salir, graficar y calcular cada uno con su programacin
correspondida.
Picturebox es graficar, claro en esta parte del programa tendremos
que hacer que nos grafique para esto usaremos un cdigo donde se
mostrara en el cdigo.
Anuncio:
Realizar un programa donde se pueda sacar el rea de un tringulo
por medio de coordenadas.
Explicacin:
El programa se ejecutara dando un mensaje luego de esto ser la
ventana donde podemos ingresar las coordenadas de cada punto
para cada punto ser el valor de 0 a 600, despus de ingresar las
coordenadas se dar click en el botn de graficar el cual se mostrara
en el cuadro donde sale la grfica y se desplegara el botn de
calcular, en el caso hipottico donde uno de los puntos este fuera de
rango saldr un error dando seal cual se tiene que cambiar,
corregido este valor se vuelve a mostrar el botn de calcular al
ejecutar este botn se desplegara los resultados, existe un tercer
botn donde nos da la opcin de salir del programa.
Cdigo del programa:
Cdigo principal:
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.Speech.Synthesis;

namespace area_de_un_triangulo
{
public partial class Form1 : Form
{
validar val = new validar();
private int p1x, p1y, p2x, p2y, p3x, p3y;
private double ladoa, ladob, ladoc, resa, resb, resc, speri, ha, hb,
hc;
SpeechSynthesizer voz = new SpeechSynthesizer();
public Form1()
{
InitializeComponent();
}

private void button1_Paint(object sender, PaintEventArgs e)


{

private void pictureBox1_Paint(object sender, PaintEventArgs e)


{

}
private void graficar()
{
Bitmap plano;
plano = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.Image = (Image)plano;
Graphics grafico = Graphics.FromImage(plano);

grafico.DrawLine(Pens.Black, new Point(0, 300), new


Point(610, 300));
grafico.DrawLine(Pens.Black, new Point(300, 0), new
Point(300, 610));

p1x = int.Parse(txtp1x.Text);
p1y = int.Parse(txtp1y.Text);
p2x = int.Parse(txtp2x.Text);
p2y = int.Parse(txtp2y.Text);
p3x = int.Parse(txtp3x.Text);
p3y = int.Parse(txtp3y.Text);
if (p1x > 600 )
{
MessageBox.Show("punto uno de X, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp1x.Text = "0";

}
if ( p1y > 600 )
{
MessageBox.Show("punto uno de Y, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp1y.Text = "0";

}
if ( p2x > 600 )
{
MessageBox.Show("punto dos de X, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp2x.Text = "0";

}
if (p2y > 600 )
{
MessageBox.Show("punto dos de Y, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp2y.Text = "0";

}
if (p3x > 600)
{
MessageBox.Show("punto tres de X, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp3x.Text = "0";

}
if ( p3y > 600)
{
MessageBox.Show("punto tres de Y, no valido vuelva a
ingresar los valores", "mal ingreso de datos", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtp3y.Text = "0";

}
if (p1x <= 600 && p1y <= 600 && p2x <= 600 && p2y <=
600 && p3x <= 600 && p3y <= 600)
{
grafico.DrawLine(Pens.DarkRed, new Point(p1x, p1y), new
Point(p2x, p2y));
grafico.DrawLine(Pens.DarkRed, new Point(p2x, p2y), new
Point(p3x, p3y));

grafico.DrawLine(Pens.DarkRed, new Point(p3x, p3y), new


Point(p1x, p1y));
btcalcular.Visible = true;

}
else
{
voz.Speak("un dato esta fuera de rango de los valores
predeterminados corrjalo por favor");
btcalcular.Visible = false;
gbdatos.Visible = false;

}
}
private void button1_Click(object sender, EventArgs e)
{
graficar();
}

private void txtp1x_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}

private void txtp1y_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}

private void txtp2x_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}

private void txtp2y_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}

private void txtp3x_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}

private void txtp3y_KeyPress(object sender, KeyPressEventArgs


e)
{
val.soloNumeros(e);
}
private void calcular()
{
ladoa = Math.Sqrt((Math.Pow((p2x - p1x), 2) + Math.Pow((p2y
- p1y), 2)));
ladob = Math.Sqrt((Math.Pow((p3x - p2x), 2) + Math.Pow((p3y
- p2y), 2)));
ladoc = Math.Sqrt((Math.Pow((p1x - p3x), 2) + Math.Pow((p1y
- p3y), 2)));
speri = (ladoa + ladob + ladoc) / 2;

ha = (2 / ladoa) * (Math.Sqrt((speri * (speri - ladoa) * (speri ladob) * (speri - ladoc))));


hb = (2 / ladob) * (Math.Sqrt((speri * (speri - ladoa) * (speri ladob) * (speri - ladoc))));
hc = (2 / ladoc) * (Math.Sqrt((speri * (speri - ladoa) * (speri ladob) * (speri - ladoc))));
resa = (ha * ladoa) / 2;
resb = (hb * ladob) / 2;
resc = (hc * ladoc) / 2;

}
private void btcalcular_Click(object sender, EventArgs e)
{
calcular();
gbdatos.Visible = true;
label16.Text = "= "+ladoa.ToString();
label12.Text = "= " + ladoc.ToString();
label13.Text = "= " + ladob.ToString();
label7.Text = "= " + ha.ToString();
label10.Text = "= " + hb.ToString();
label11.Text = "= " + hc.ToString();
label22.Text = "= " + resa.ToString();
label19.Text = "= " + resb.ToString();
label18.Text = "= " + resc.ToString();
label24.Text = "= " + speri.ToString();
}

private void Form1_Load(object sender, EventArgs e)


{
MessageBox.Show("programa para saber el area de cualquier
triangulo","Bienvenido",MessageBoxButtons.OK,MessageBoxIcon.Infor
mation);

voz.Speak("Bienvenido, este programa le ayudara a saber el


area de un triangulo, esperemos que le sea util.");

private void bsalir_Click(object sender, EventArgs e)


{
voz.Speak("gracias por su visita");
Close();
}
}
}
Validacion:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; // para el evento de validad cada vez
que se aplasta la tecla

namespace area_de_un_triangulo
{
class validar
{
public void soloNumeros(KeyPressEventArgs e)
{
try
{
if (Char.IsNumber(e.KeyChar))
{

e.Handled = false;
}
else if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}

else
{
e.Handled = true;
}
}
catch (Exception ex)
{

}
}
}
Diseo visualizado:

Corrida del programa:

Conclusiones:
Las amplias posibilidades que puede dar vida a un programa de forma
grfica son ms cuestin de ingenio, dando una personalidad a cada
programa.
La programacin est divida de forma ms dinmica pero las
validaciones, pueden ser donde toca aplicar mas razonamiento.

Vous aimerez peut-être aussi