Archivo de la categoría: VB.NET

[WPF] Ventana sin bordes

Este no va a ser un artículo muy largo pues sólo se explicará cómo obtener una ventana sin bordes y agregar la funcionalidad de que se pueda mover, minimizar y cerrar.

Comencemos primero quitando los bordes de la ventana.

<Window x:Class="Windowless.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        WindowStyle="None"
        AllowsTransparency="True" Background="Transparent">

</Window>

La propiedad WindowStyle nos ayudará a quitar el borde donde se encuentra los botones (maximizar, minimizar y cerrar); con la propiedad AllowsTransparency creará una zona donde se permita la transparencia, esto unido al Background transparente terminará en una ventana completamente transparente.

Ahora veamos el resto de código donde se muestra la creación de la barra de título y los botones.

<Border Margin="10" BorderBrush="Red" BorderThickness="0.5">
    <Border.Effect>
        <DropShadowEffect Color="Black"
                          Direction="320"
                          BlurRadius="15"
                          ShadowDepth="3" />
    </Border.Effect>
    <DockPanel LastChildFill="True" Background="White">
        <Grid DockPanel.Dock="Top" Height="25">
            <TextBlock Text="{Binding Path=Title, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
                       HorizontalAlignment="Center" />
            <Rectangle Name="titleBar"
                       Fill="Transparent"
                       MouseLeftButtonDown="titleBar_MouseLeftButtonDown"/>
            <Button Name="closeButton"
                    Style="{StaticResource CerrarStyle}"
                    HorizontalAlignment="Right"
                    Width="15" Margin="0,0,5,0" Height="15"
                    Click="closeButton_Click"/>
            <Button Name="minButton"
                    Style="{StaticResource MinimizarStyle}"
                    HorizontalAlignment="Right"
                    Width="15" Margin="0,0,25,0" Height="9"
                    Click="minButton_Click"/>
        </Grid>
        <Grid Name:"Contenido">

        </Grid>
    </DockPanel>
</Border>

Los eventos de los botones y el rectángulo están definidos así:

private void titleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    this.DragMove();
}

private void closeButton_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}

private void minButton_Click(object sender, RoutedEventArgs e)
{
    this.WindowState = System.Windows.WindowState.Minimized;
}

Y eso sería todo para crear nuestra ventana sin bordes. Como siempre les dejo el archivo en C# (Windowless.zip), esta vez no publicaré el de VB.NET pues es bastante sencillo de convertir.

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

NotifyIcon en WPF y Visual Basic .NET

Hoy hablaremos de como tener un icono de notificación en WPF usando Visual Basic. Primero debemos agregar al proyecto la referencia a System.Windows.Form y a System.Drawing.Icon, luego agregar nuestro icono al proyecto y en las propiedades marcarlo como elemento incrustado y ahora si miremos el código

Class MainWindow
    Private ni As New System.Windows.Forms.NotifyIcon()
    Private ContextMenu1 As New System.Windows.Forms.ContextMenu()
    Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs)
        'Añadimos la opción Restaurar, que será el elemento predeterminado
        ContextMenu1.MenuItems.Add("&Restaurar", New EventHandler(AddressOf Restaurar_Click))
        ContextMenu1.MenuItems(0).DefaultItem = True
        ' Añadimos un separador
        ContextMenu1.MenuItems.Add("-")
        ' Añadimos el elemento Acerca de...
        ContextMenu1.MenuItems.Add("&Acerca de...", New EventHandler(AddressOf AcercaDe_Click))
        ' Añadimos otro separador
        ContextMenu1.MenuItems.Add("-")
        ' Añadimos la opción de salir
        ContextMenu1.MenuItems.Add("&Salir", New EventHandler(AddressOf Salir_Click))
        'Cargamos el NotifyIcon con el Menu Contextual (Context Menu), con el icono y lo
        'configuramos para que sea visible
        With ni
            .ContextMenu = ContextMenu1
            .Icon = New System.Drawing.Icon(pruebasVB_WPF.Application.ResourceAssembly.
                              GetManifestResourceStream("pruebasVB_WPF.Main.ico"))
            .Visible = True
        End With

    End Sub
End Class

Sigue leyendo