Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ===++===
- //
- // 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
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement