Created
July 17, 2014 01:00
-
-
Save Fhernd/1d1eeb8e9d57a15c0def to your computer and use it in GitHub Desktop.
Control para la visualización de la información de los juegos.
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: ControlJuegos.cs | |
// | |
// Original en: http://goo.gl/ba8gJ0 | |
// | |
// Propósito: Panel de visualización de los juegos que | |
// se venden en la empresa. | |
// | |
============================================================*/ | |
using System; | |
using System.Collections; | |
using System.ComponentModel; | |
using System.Drawing; | |
using System.Windows.Forms; | |
using JuegosCelulares.Modelo; | |
namespace JuegosCelulares.GUI | |
{ | |
/// <summary> | |
/// Control para los controles de compra y venta de juegos. | |
/// </summary> | |
public partial class ControlJuegos : UserControl | |
{ | |
#region Campos (componentes) | |
/// <summary> | |
/// Representa el formulario padre de este control. | |
/// </summary> | |
private Principal ventanaPrincipal; | |
#endregion | |
#region Campos | |
/// <summary> | |
/// Valor centinela para determinar cuando disparar el | |
/// evento de modificación de índice del control ComboBox. | |
/// </summary> | |
private bool cbxInicializado; | |
/// <summary> | |
/// Cantidad del juego a comprar/vender. | |
/// </summary> | |
private int cantidad; | |
#endregion | |
#region Propiedades | |
/// <summary> | |
/// Obtiene y modifica la cantidad del juego a comprar o vender. | |
/// </summary> | |
public int Cantidad | |
{ | |
get | |
{ | |
return cantidad; | |
} | |
set | |
{ | |
cantidad = value; | |
} | |
} | |
#endregion | |
#region Constructores | |
/// <summary> | |
/// Crea un nuevo control para la visualizaicón de la información | |
/// de los juegos. | |
/// </summary> | |
/// <param name="principal">Formulario padre.</param> | |
/// <param name="nombresJuegos">Nombres de los juegos.</param> | |
public ControlJuegos(Principal principal, ArrayList nombresJuegos) | |
{ | |
InitializeComponent(); | |
ventanaPrincipal = principal; | |
cantidad = 0; | |
foreach (string nombreJuego in nombresJuegos) | |
{ | |
cbxJuegos.Items.Add(nombreJuego); | |
} | |
cbxInicializado = true; | |
cbxJuegos.SelectedIndex = 0; | |
} | |
#endregion | |
#region Métodos | |
/// <summary> | |
/// Actualiza la información del juego. | |
/// </summary> | |
/// <param name="juego">Contendedor de la información del juego.</param> | |
public void CambiarJuego(Juego juego) | |
{ | |
if (juego != null) | |
{ | |
if (juego.Nombre.Equals("Car Racer 2")) | |
{ | |
pbxImagen.Image = Properties.Resources.CarRacer2; | |
} | |
else if (juego.Nombre.Equals("Air Attack")) | |
{ | |
pbxImagen.Image = Properties.Resources.AirAttack; | |
} | |
else if (juego.Nombre.Equals("Mini Golf 2")) | |
{ | |
pbxImagen.Image = Properties.Resources.MiniGolf2; | |
} | |
else if (juego.Nombre.Equals("Aztec Warrior")) | |
{ | |
pbxImagen.Image = Properties.Resources.AztecWarrior; | |
} | |
txtNombre.Text = juego.Nombre; | |
txtCategoria.Text = juego.Categoria.ToString(); | |
txtTamagnioKb.Text = juego.TamanioKB.ToString(); | |
txtPrecio.Text = juego.Precio.ToString("C"); | |
txtDisponibles.Text = juego.CantidadActual.ToString("##.#"); | |
btnVender.Enabled = true; | |
} | |
else | |
{ | |
Image imagenPrevia = null; | |
txtNombre.Text = (string)cbxJuegos.SelectedItem; | |
if (txtNombre.Text.Equals("Car Racer 2")) | |
{ | |
imagenPrevia = Properties.Resources.CarRacer2; | |
} | |
else if (txtNombre.Text.Equals("Air Attack")) | |
{ | |
imagenPrevia = Properties.Resources.AirAttack; | |
} | |
else if (txtNombre.Text.Equals("Mini Golf 2")) | |
{ | |
imagenPrevia = Properties.Resources.MiniGolf2; | |
} | |
else if (txtNombre.Text.Equals("Aztec Warrior")) | |
{ | |
imagenPrevia = Properties.Resources.AztecWarrior; | |
} | |
pbxImagen.Image = ConvertirImagenAEscalaDeGrisis(imagenPrevia); | |
txtCategoria.Text = "No Disponible"; | |
txtTamagnioKb.Text = "No Disponible"; | |
txtPrecio.Text = "No Disponible"; | |
txtDisponibles.Text = "No Disponible"; | |
btnVender.Enabled = false; | |
} | |
} | |
/// <summary> | |
/// Aplica el efecto de escala de grises a una imagen del juego. | |
/// </summary> | |
/// <param name="imagenFuente">Imagen a aplicar el efecto de escala de grises.</param> | |
/// <returns>Imagen en escala de grises.</returns> | |
private Bitmap ConvertirImagenAEscalaDeGrisis(Image imagenFuente) | |
{ | |
Bitmap imagenNueva = new Bitmap(imagenFuente); | |
int gris; | |
for (int x = 0; x < imagenNueva.Width; ++x ) | |
{ | |
for (int y = 0; y < imagenNueva.Height; ++y) | |
{ | |
gris = (Convert.ToInt32(imagenNueva.GetPixel(x, y).R) + imagenNueva.GetPixel(x, y).G + imagenNueva.GetPixel(x, y).B) / 3; | |
imagenNueva.SetPixel(x, y, Color.FromArgb(gris, gris, gris)); | |
} | |
} | |
return imagenNueva; | |
} | |
#endregion | |
#region Eventos | |
/// <summary> | |
/// Actualiza la información de los controles de acuerdo al | |
/// juego seleccionado de la lista. | |
/// </summary> | |
/// <param name="sender">Generador del evento.</param> | |
/// <param name="e">Argumentos del evento.</param> | |
private void cbxJuegos_SelectedIndexChanged(object sender, EventArgs e) | |
{ | |
if (!cbxInicializado) | |
{ | |
switch (cbxJuegos.SelectedIndex) | |
{ | |
case 0: | |
pbxImagen.Image = Properties.Resources.CarRacer2; | |
break; | |
case 1: | |
pbxImagen.Image = Properties.Resources.AirAttack; | |
break; | |
case 2: | |
pbxImagen.Image = Properties.Resources.MiniGolf2; | |
break; | |
case 3: | |
pbxImagen.Image = Properties.Resources.AztecWarrior; | |
break; | |
} | |
string nombreJuego = (string)cbxJuegos.SelectedItem; | |
ventanaPrincipal.CambiarJuegoSeleccionado(nombreJuego); | |
} | |
else | |
{ | |
cbxInicializado = false; | |
} | |
} | |
/// <summary> | |
/// Activa la operación de compra. | |
/// </summary> | |
/// <param name="sender">Generador del evento.</param> | |
/// <param name="e">Argumentos del evento.</param> | |
private void btnComprar_Click(object sender, EventArgs e) | |
{ | |
DialogoCompra dc = new DialogoCompra(this); | |
if (dc.ShowDialog(this) == DialogResult.OK) | |
{ | |
ventanaPrincipal.ComprarJuego(txtNombre.Text, cantidad); | |
} | |
} | |
/// <summary> | |
/// Activa la operación de venta. | |
/// </summary> | |
/// <param name="sender">Generador del evento.</param> | |
/// <param name="e">Argumentos del evento.</param> | |
private void btnVender_Click(object sender, EventArgs e) | |
{ | |
DialogoVenta dv = new DialogoVenta(this); | |
if (dv.ShowDialog(this) == DialogResult.OK) | |
{ | |
if (!ventanaPrincipal.VenderJuego(txtNombre.Text, cantidad)) | |
{ | |
MessageBox.Show(this, "No se cuenta con inventario para este producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); | |
} | |
} | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment