Archivo de la categoría: WinForms

Usando una WebCam con Window Form | Parte 3: Aplicando Filtros

En este artículo de la serie: Usando una WebCam  con Window Forms vamos a aplicar algunos filtros que están contenidos en el Framework de Aforge.NET. Utilizaremos las librerías Aforge.Video y Aforge.Video.DirectShow como de costumbre, solo que esta vez agregaremos Aforge.Imaging para usar Filters.

El Formulario será sencillo como los anteriores. Esta vez tendremos 2 ComboBox (uno para los dispositivos de video y el otro para los distintos filtros que vamos a usar), 1 Button (para iniciar o detener la Cámara Web) y un PictureBox (para mostrar el video capturado por la Cámara Web). El diseño de esto debe ser algo como:

El código para hacer operar la cámara web es el mismo que el de los pasados artículos, por lo tanto, so lo voy  poner aquí el código que ha cambiado o se ha agregado. Primero veamos lo que hemos de agregar: Sigue leyendo

Usando una WebCam con Windows Form – Parte 2: Grabando

Siguiendo la serie de artículos Usando una WebCam  con Window Forms, esta vez crearemos un programa para grabar lo que veamos en la WebCam. En este caso vamos a usar las librerías Aforge.Video (para tener acceso a la clase NewFrameEventArgs), Aforge.Video.DirectShow (para usar la clase VideoCaptureDevice entre otras) y Aforge.Video.VFW (usaremos la clase AVIWriter para grabar un archivo .avi). Como comenté en el artículo pasado, debemos cambiar el Framework de Destino -si usamos .NET Framework 4.0– a .NET Framework 3.5. Vamos a usar un Form sencillo, solo un PictureBox que mostrará la cámara web, un ComboBox que va a contener los diferentes dispositivos de captura, un Button para iniciar el dispositivo seleccionado y otro para iniciar la grabación. El diseño quedaría así:

El código que vamos a usar es casi una copia exacta del artículo pasado, así que esta vez sólo voy a poner el código que he usado para grabar la WebCam. Sigue leyendo

Usando una WebCam con Windows Form | Parte 1: Captura

Uno de los programas que a las personas les gusta aprender a hacer es el de controlar una cámara web mediante .NET Framework. En este artículo utilizaremos las librerías que están incluidas en el Framework de Aforge.NET para hacer un programa que interactúe con nuestra cámara web.

Primero se debe aclarar que este Framework no funciona con .NET Framework 4.0, por eso debemos cambiar el Framework de Destino: Explorador de Soluciones –> Propiedades del Proyecto (Alt + Entrar) –> Aplicación.

Ahora comencemos con nuestro Form, utilizaremos 2 PictureBox (1 para mostrar la WebCam y otro para hacer una Captura), 3 Botones (1 Para Iniciar la WebCam, otro para capturar una imagen y otro para guardar la imagen capturada) y un ComboBox (mostrará los diferentes dispositivos de video). Nos debe quedar algo como:

Sigue leyendo

Averiguar las instancias de SQL Server instaladas

Ya hace un tiempo que en el primer artículo de este blog publiqué una de las formas de cómo obtener las instancias de SQL Server instaladas en el computador. He querido retomar ese artículo pero con una nueva propuesta:

using System.Data.Sql;

public static DataTable Instancias()
{
    DataTable enume = SqlDataSourceEnumerator.Instance.GetDataSources();
    return enume;
}
private void Form1_Load ( object sender, EventArgs e )
{
    dataGridView1.DataSource = Instancias ();
}

El resultado de pedazo de código va a ser una tabla con el nombre del Servidor, el nombre de la Instancia, IsClustered y la versión de la Instancia. Les dejo una imagen de cómo queda.

Nota: SqlDataSourceEnumerator retorna todas las instancias disponibles de SQL Server incluidas en la red local.

Progressbar usando 2 Forms

A medida que un programa crece puede tornarse lento, haciendo procesos y devolviendo los valores que necesitamos duren en cargarse y a veces dañando nuestra interfaz gráfica. Esta vez veremos como usar un backgroundWorker en un formulario Hijo para cargar la progressBar del formulario Padre. Que necesitaremos:

  1. Dos Formularios
  2. Añadir un controles a el Formulario Padre  (progressBar y un Button)
  3. Añadir un control al Formulario Hijo (backgroundWorker)

Form Hijo

Luego de añadir el control backgroundWorker vamos a las Propiedades y cambiamos la opción WorkerReportsProgress de False a True para poder reportar el progreso en la progressBar. Ahora añadimos los 3 eventos del backgroundWorker

private void Hijo_Load ( object sender, EventArgs e )
        {
            backgroundWorker.RunWorkerAsync ();
        }
private void backgroundWorker_DoWork ( object sender, DoWorkEventArgs e )
        {
            for ( int i = 1 ; i <= 100 ; i++ )
            {
                backgroundWorker.ReportProgress ( i );
                Thread.Sleep ( 150 );
            }
        }

Este procedimiento es el que se encargará de hacer el proceso que nosotros queramos llevar acabo.

Sigue leyendo

Drag y Drop entre Lista-Lista o Combo-Lista

Veamos un pequeño ejemplo para hacer Drag Drop entre dos Listas o entre un Combobox y una Lista.

Este es el código para cuando el usuario hace clic en la lista que posee los elementos que se quieren mover

private void listBox2_MouseDown ( object sender, MouseEventArgs e )
{
    try
    {
        //Validamos que se haya seleccionado un elemento
        if ( listBox2.SelectedIndex &gt; -1 )
            //Emepezamos a hacer el Drag del elemento
            listBox2.DoDragDrop ( listBox2.SelectedItem, DragDropEffects.All );
    }
    catch ( Exception ) { }
}

Este es el código para cuando el usuario hace clic en el comboBox que posee los elementos que se quieren mover

private void comboBox1_MouseDown ( object sender, MouseEventArgs e )
{
    try
    {
        //Se usa el DroppedDown para que no se desactive esta funcion cuando se haga clic
        //sobre un elemento, ademas se valida que se haya seleccionado un elemento
        if (comboBox1.SelectedIndex > -1 && comboBox1.DroppedDown == false)
            comboBox1.DoDragDrop ( comboBox1.SelectedItem, DragDropEffects.All );
        else
            comboBox1.DroppedDown = true;
    }
    catch ( Exception ) { }
}

Y por último pero no menos importante, el código para la lista a la cual queremos agregar elementos
Sigue leyendo