Inténtelo: crear una ventana no rectangular
En las aplicaciones de Microsoft Expression Blend, es posible que desee crear una ventana que tenga una apariencia visual no rectangular en tiempo de ejecución. Algunos de los ejemplos más comunes son los applets de escritorio, los widgets y los reproductores multimedia. Para crear ventanas no rectangulares, debe cambiar algunas propiedades del elemento Window en la aplicación y, a continuación, crear un método de control de eventos que permita mover la ventana sin necesidad de una barra de título.
Convertir en transparente una ventana no rectangular
En el panel Objetosyescala de tiempo, seleccione el elemento Window y, en Apariencia en el panel Propiedades, cambie la propiedad WindowStyle a None para quitar el shell de la ventana (la barra de título). Presione F5 para ver la apariencia de la ventana sin el shell predeterminado. Observe que los botones Minimizar, Maximizar, Restaurar y Cerrar estándar ya no están a la vista. Observe también que ya no puede arrastrar la ventana. Presione Alt+F4 para cerrar la ventana.
[!NOTA]
Para obtener información acerca de las demás opciones de WindowStyle, vea "WindowStyle" en el tema de información general sobre ventanas de Windows Presentation Foundation (puede estar en inglés) en MSDN.
En Apariencia, en el panel Propiedades, active la casilla de verificación AllowsTransparency. Observe que el borde de la ventana ya no está visible.
Para agregar la transparencia a la ventana, establezca la propiedad Background del elemento Window en Sin pincel en la categoría Pinceles del panel Propiedades. Como alternativa, si desea que el usuario pueda hacer clic en el área invisible de la ventana, puede establecer la propiedad Background en Pincel de color sólido y, a continuación, establecer la propiedad Alpha del pincel de fondo en 1. De esta forma se mantiene el área interactiva de la ventana a la vez que se convierte en invisible.
Por último, en el panel Objetos y escala de tiempo, haga clic en LayoutRoot para habilitar el elemento y agregar elementos del panel Herramientas a la mesa de trabajo. Puede crear varios efectos estableciendo un pincel OpacityMask en un elemento.
Para obtener más información sobre cómo hacer esto, vea Crear una máscara de opacidad.
También puede agregar formas y trazados dibujados con herramientas de dibujo como Elipse y Pluma, y situar después los elementos detrás de otros elementos (haga clic con el botón secundario en un elemento y haga clic en Ordenar). El contenido de LayoutRoot definirá de forma eficaz el contorno de la aplicación.
Presione F5 de nuevo para ver la apariencia de la ventana ahora. Observe que aún no puede arrastrar la ventana. Presione Alt+F4 para cerrar la ventana.
Agregar código para poder arrastrar la ventana en tiempo de ejecución
Después de hacer transparente la ventana, perderá la capacidad de desplazar la ventana sin una barra de título. Para poder mover la ventana de nuevo, debe agregar un controlador de eventos a la ventana y, a continuación, agregar una pequeña cantidad de código al archivo de código subyacente relacionado.
Para guardar el proyecto en el disco duro, haga clic en Guardar todo en el menú Archivo. (No se pueden agregar métodos de control de eventos a proyectos que no se han guardado.)
Con el elemento Window seleccionado en el panel Objetos y escala de tiempo, haga clic en Eventos en el panel Propiedades.
Junto a MouseLeftButtonDown, escriba OnMouseLeftButtonDown y, a continuación, presione la tecla ENTRAR.
Modifique el método de control de eventos generado en el archivo de código subyacente de modo que el controlador de eventos sea similar al siguiente:
private void OnMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.DragMove(); }
Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Me.DragMove() End Sub
Presione F5 para ejecutar la aplicación.
Puede agregar métodos de control de eventos adicionales, como un método para el evento Click de un botón que llame al método Close() en el archivo de código subyacente.
Para obtener más información acerca de cómo crear métodos de control de eventos, vea Escribir código que responda a eventos.