Created
June 1, 2014 21:39
-
-
Save Fhernd/8883c631e066d7675a99 to your computer and use it in GitHub Desktop.
Formulario con la interfaz principal de la aplicación.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ===++=== | |
// | |
// OrtizOL | |
// | |
// ===--=== | |
/*============================================================ | |
// | |
// Clase: ManipulacionCadenas.cs | |
// | |
// Original en: http://goo.gl/rgtOdI | |
// | |
// Propósito: Demostrar el uso uso eficiente de StringBuilder | |
// | |
============================================================*/ | |
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 ElTriangulo.Modelo; | |
namespace ElTriangulo.GUI | |
{ | |
/// <summary> | |
/// Formulario principal de la interfaz gráfica de usuario. | |
/// </summary> | |
public partial class Principal : Form | |
{ | |
#region Atributos | |
/// <summary> | |
/// Triángulo a manipular. | |
/// </summary> | |
private Triangulo triangulo; | |
#endregion | |
#region Atributos (Componentes) | |
/// <summary> | |
/// Control de botones de manipulación estado de triángulo. | |
/// </summary> | |
private ControlBotones controlBotones; | |
/// <summary> | |
/// Imagen de título de la aplicación. | |
/// </summary> | |
private ControlImagen controlImagen; | |
/// <summary> | |
/// Control con botones para los puntos de atención. | |
/// </summary> | |
private ControlOpciones controlOpciones; | |
/// <summary> | |
/// Control con el lienzo de dibujo del triángulo. | |
/// </summary> | |
private ControlTriangulo controlTriangulo; | |
/// <summary> | |
/// Control de entrada de valores para puntos del triángulo. | |
/// </summary> | |
private DialogoPuntos dialogoPuntos; | |
#endregion | |
#region Propiedades | |
/// <summary> | |
/// Modifica y recupera el triángulo. | |
/// </summary> | |
public Triangulo Triangulo | |
{ | |
get | |
{ | |
return triangulo; | |
} | |
} | |
#endregion | |
#region Constructores | |
/// <summary> | |
/// Carga la interfaz principal. | |
/// </summary> | |
public Principal() | |
{ | |
InitializeComponent(); | |
ConfiguracionComponentes(); | |
Repintar(); | |
} | |
#endregion | |
#region Métodos | |
/// <summary> | |
/// Carga las propiedades de los controles integrales de | |
/// la interfaz principal de usuario. | |
/// </summary> | |
private void ConfiguracionComponentes() | |
{ | |
this.Icon = (Icon)Properties.Resources.TrianguloIcon; | |
// Puntos por defecto para el triángulo: | |
Punto punto1 = new Punto(120.0, 20.0); | |
Punto punto2 = new Punto(220, 200); | |
Punto punto3 = new Punto(20, 200); | |
// Colores para el relleno y la línea: | |
Modelo.Color colorRelleno = new Modelo.Color(0, 0, 255); | |
Modelo.Color colorLineas = new Modelo.Color(0, 255, 0); | |
triangulo = new Triangulo(punto1, punto2, punto3, colorRelleno, colorLineas); | |
controlImagen = new ControlImagen(); | |
controlBotones = new ControlBotones(this); | |
controlBotones.Location = new Point(0, 68); | |
controlTriangulo = new ControlTriangulo(triangulo); | |
controlTriangulo.Location = new Point(173, 68); | |
controlOpciones = new ControlOpciones(this); | |
controlOpciones.Location = new Point(0, 288); | |
this.Controls.Add(controlImagen); | |
this.Controls.Add(controlBotones); | |
this.Controls.Add(controlTriangulo); | |
this.Controls.Add(controlOpciones); | |
} | |
/// <summary> | |
/// Cambia los puntos del triángulo. | |
/// </summary> | |
public void cambiarPuntos() | |
{ | |
dialogoPuntos = new DialogoPuntos(this); | |
dialogoPuntos.ShowDialog(); | |
} | |
/// <summary> | |
/// Valida que los puntos integrales del triángulo no sean colineales. | |
/// </summary> | |
/// <param name="punto1x">Ordeanda X del punto 1.</param> | |
/// <param name="punto1y">Coordenada Y del punto 1.</param> | |
/// <param name="punto2x">Ordenada X del punto 2.</param> | |
/// <param name="punto2y">Coordenada Y del punto 2.</param> | |
/// <param name="punto3x">Ordenada X del punto 3.</param> | |
/// <param name="punto3y">Coordenada Y del punto 3.</param> | |
/// <returns></returns> | |
public bool Colineales(double punto1x, double punto1y, double punto2x, double punto2y, double punto3x, double punto3y) | |
{ | |
// Aplicación fórmula (http://goo.gl/Ua5BfP): 1/2 { (x1 y2 + x2 y3 + x3 y1) - ( x2 y1 + x3 y2 + x1 y3) } == 0? | |
return (1.0 / 2.0) * ((punto1x * punto2y + punto2x * punto3y + punto3x * punto1y) - (punto2x * punto1y + punto3x * punto2y + punto1x * punto3y)) == 0.0; | |
} | |
/// <summary> | |
/// Redibuja el triángulo. | |
/// </summary> | |
public void Repintar() | |
{ | |
controlTriangulo.Refresh(); | |
controlBotones.CambiarInformacion(triangulo.CalcularPerimetro(), triangulo.CalcularArea(), triangulo.CalcularAltura()); | |
} | |
/// <summary> | |
/// Cambia el color de las líneas del triángulo. | |
/// </summary> | |
public void CambiarColorLineas() | |
{ | |
Modelo.Color colorActual = new Modelo.Color(triangulo.ColorLineas.Rojo, triangulo.ColorLineas.Verde, triangulo.ColorLineas.Azul); | |
System.Drawing.Color colorNuevo; | |
ColorDialog selectorColor = new ColorDialog(); | |
selectorColor.ShowHelp = false; | |
if (selectorColor.ShowDialog(this) == DialogResult.OK) | |
{ | |
colorNuevo = selectorColor.Color; | |
colorActual = new Modelo.Color(colorNuevo.R, colorNuevo.G, colorNuevo.B); | |
triangulo.ColorLineas = colorActual; | |
Repintar(); | |
} | |
} | |
/// <summary> | |
/// Cambia el color de fondo (relleno) del triángulo. | |
/// </summary> | |
public void CambiarColorFondo() | |
{ | |
Modelo.Color colorActual = new Modelo.Color(triangulo.ColorRelleno.Rojo, triangulo.ColorRelleno.Verde, triangulo.ColorRelleno.Azul); | |
System.Drawing.Color colorNuevo; | |
ColorDialog selectorColor = new ColorDialog(); | |
selectorColor.ShowHelp = false; | |
if (selectorColor.ShowDialog(this) == DialogResult.OK) | |
{ | |
colorNuevo = selectorColor.Color; | |
colorActual = new Modelo.Color(colorNuevo.R, colorNuevo.G, colorNuevo.B); | |
triangulo.ColorRelleno = colorActual; | |
Repintar(); | |
} | |
} | |
#endregion | |
#region Puntos de extensión. | |
/// <summary> | |
/// Punto de extensión no. 1. | |
/// </summary> | |
public void MetodoExtension1() | |
{ | |
MessageBox.Show(this, triangulo.MetodoExtension1(), "Método Extensión No. 1", MessageBoxButtons.OK, MessageBoxIcon.Information); | |
} | |
/// <summary> | |
/// Punto de extensión no. 2. | |
/// </summary> | |
public void MetodoExtension2() | |
{ | |
MessageBox.Show(this, triangulo.MetodoExtension2(), "Método Extensión No. 2", MessageBoxButtons.OK, MessageBoxIcon.Information); | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment