Introducción básica al diseño de menús de VB.NET[3]
5. Dibuje un menú personalizado
Primero realice los siguientes pasos Los siguientes pasos son para diseñar un menú simple a través del editor de menú como base para volver a dibujarlo
Inicie Visual Studio Net
Seleccione el menú Archivo | Nuevo | Proyecto y aparecerá un cuadro de diálogo de nuevo proyecto
Establezca el tipo de proyecto en Proyecto de Visual Basic
Establezca la plantilla en el programa de aplicación de Windows
Ingrese al menú Draw Yourself en el cuadro de texto del nombre
Ingrese E:\VS NET Project en el cuadro de texto de ubicación y haga clic en el botón Aceptar para que está en E:\VS NET Project. Se crea una carpeta llamada Draw Yourself Menu en el directorio y en ella se crea un archivo de proyecto llamado Draw Yourself Menu.
Cambie la ventana actual de Visual Studio Net al formulario ventana vb (diseño) y cambie desde Desde la pestaña Componentes de Windows Forms en la caja de herramientas, arrastre los siguientes componentes al formulario Formulario
Un componente del Menú principal se llama Menú principal
Seleccione el componente Menú principal y haga clic con el botón derecho del mouse en la ventana emergente. Seleccione el menú Editar en el menú y diseñe el menú de acuerdo con la interfaz que se muestra en la imagen
Imagen de una de las interfaces de diseño de elementos del menú
En este momento, guarde los pasos anteriores y haga clic en la tecla de acceso directo F para obtener la imagen La interfaz que se muestra
Imagen de uno de los menús que ejecutan interfaces que puede dibujar usted mismo
En De esta manera, se completa un menú muy común a través del editor de menú. Ahora transformemos este menú. Antes de transformar, primero debe establecer el valor de la propiedad OwnerDraw de las tres instancias de la clase MenuItem en el proyecto en True porque solo si este valor de propiedad es True. ¿Se activarán el evento DrawItem y el evento MeasureItem necesarios para dibujar el menú y luego realizará el siguiente paso según el proyecto anterior?
Cambie la ventana actual de Visual Stuido Net a la ventana de edición de código de Form vb y agregue el siguiente código después del proceso de InicializarComponente. El siguiente código es para dibujar el elemento del menú del archivo. Su función es cambiar el tamaño de fuente y el elemento del menú del archivo. Para conocer su método de dibujo específico, consulte los comentarios en. siguiente código
SubMenúItem privado _DrawItem (ByVal remitente como objeto ByVal y como sistema Windows Forms DrawItemEventArgs) Maneja MenuItem DrawItem Dim rfBound As RectánguloF = Nuevo RectánguloF (e Límites X e Límites Y e Límites Ancho e Límites Alto) Obtenga el área rectangular del elemento de menú de acuerdo con el parámetro DrawItemEventArgs y guárdelo en la instancia de tipo RectánguloF Dim rfBound As Rectángulo = Nuevo rectángulo (e Bounds X e Bounds Y e Bounds Width e Bounds Height) Obtenga de acuerdo con el parámetro DrawItemEventArgs El área rectangular de El elemento del menú se almacena en una instancia de tipo Rectángulo. Las instancias de tipo Rectángulo son similares a las instancias de tipo RectánguloF, pero las funciones para dibujar menús en el código subyacente son diferentes y Graphics FillRectangle(New SolidBrush(Color LightGreen) rfBound) usa LightGre.
el color rellena el área rectangular correspondiente al elemento del menú MenuItem Dim s As MenuItem = CType (remitente MenuItem) | Dim s As String = s Text Obtiene el nombre del elemento del menú MenuItem Dim sfTemp As StringFormat = New StringFormat ( ) | Alineación = StringAlignment Center | Establecer en Alineación del nombre del menú dibujado Alineación central e Graphics DrawString ( s New Font (宋体FontStyle Bold) New SolidBrush (Color Black) rfBound sfTemp) Especifique el tamaño de fuente con alineación central Vuelva a dibujar el menú en el rectángulo especificado área Si e State = (DrawItemState NoAccelerator o DrawItemState seleccionado) Luego dibuje el elemento del menú de acuerdo con el estado de dibujo actual del elemento del menú e Graphics FillRectangle (Nuevo SolidBrush (Color LightYellow) rfBound) Rellene con color el área rectangular donde se encuentra el elemento del menú e Graphics DrawString ( s New Font ( Song Dynasty FontStyle Bold ) New SolidBrush ( Color Black ) rfBound sfTemp ) Dibuja el nombre del elemento del menú End If e DrawFocusRectangle ( ) Dibuja un marco de enfoque dentro del rango rectangular obtenido por el parámetro DrawItemEventArgs e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color Black ) ) rfBound ) Dibuja el menú Dibuja un cuadro rectangular en el área rectangular del elemento End Sub
Una vez completada la operación, guarda la modificación y luego haz clic en tecla de método abreviado F para ejecutar el programa y obtener la interfaz como se muestra en la imagen
Dibuje su propio menú Ejecute la interfaz 2
Se puede ver que los elementos del menú del archivo dibujado no están completamente se muestra y los elementos del menú posteriores tampoco se muestran. Esto se debe a que el área de visualización de los elementos del menú no se ha configurado y el espacio predeterminado no se puede mostrar por completo. El tamaño del área de visualización del elemento del menú se establece a través del evento MeasureItem. La operación específica es agregar el siguiente código después del evento DrawItem de MenuItem. El siguiente código es definir el evento MeasureItem de MenuItem y establecer el ancho del elemento de menú en este evento (por supuesto, también puede configurar el. altura, etc.)
Private Sub MenuItem _MeasureItem ( ByVal sender As Object ByVal e As System Windows Forms MeasureItemEventArgs ) Maneja MenuItem MeasureItem e ItemWidth = Establece el ancho del elemento de menú End Sub
Después de guardar las modificaciones anteriores, haga clic en la tecla de acceso directo F para ejecutar el programa y obtener la interfaz que se muestra en la figura
Figura 3 del menú de dibujo ejecutando la interfaz
Se puede ver que el elemento del menú de archivo se dibuja. Dado que otros elementos del menú no se dibujan, no se muestran. El método de dibujo de otros elementos del menú es básicamente similar al método de dibujo del elemento del menú de archivo. Los siguientes son los pasos de implementación específicos del dibujo. otros elementos del menú basados en la finalización anterior para obtener el menú que se muestra en la figura
Figura 4 donde dibuja la interfaz de ejecución del menú usted mismo
> Agregue el siguiente código después del controlador de eventos MeasureItem de MenuItem en Form vb. El siguiente código define el evento DrawItem de MenuItem. Su función es volver a dibujar el nuevo elemento de menú Private Sub MenuItem _DrawItem (ByVal sender As Object ByVal e As System Windows). Forms DrawItemEventArgs) Maneja MenuItem DrawItem Dim rfBound As RectánguloF = Nuevo RectánguloF ( e Bounds e Bounds Y e Bounds Width e Bounds Height ) Obtenga el área rectangular del elemento de menú según el parámetro DrawItemEventArgs y guárdelo en una instancia de tipo Rectángulo. Las instancias de tipo Rectángulo son similares a las instancias de tipo RectánguloF, pero las funciones para dibujar menús en el código subyacente son diferentes e Graphics FillRectangle ( New SolidBrush ( Color LightGray ) rfBound )Dim s As MenuItem = CType ( sender MenuItem )Dim s As String =. s Text Obtiene el nombre del texto correspondiente al elemento del menú Dim sfTemp As StringFormat = New StringFormat ( )sfTemp Alignment = StringAlignment Center Establece el texto en Alineación del área rectangular sfTemp LineAlignment = StringAlignment Center Dim rcText As RectánguloF = rcText Ancho =e | Graphics DrawString (s New Font (宋体) New SolidBrush (Color Blue) rcText sfTemp)e Graphics DrawRectangle (New Pen (New SolidBrush (Color LightGray)) rfBound) Si e State = (DrawItemState NoAccelerator o DrawItemState seleccionado) Entonces Graphics FillRectangle (New) SolidBrush (Color LightYellow) rfBound) Graphics DrawString (s New Font (宋体FontStyle Bold o FontStyle Underline) New SolidBrush (Color Red) rcText sfTemp) e Graphics DrawRectangle (New Pen (New SolidBrush (Color Black)) rfBound) e DrawFocusRectangle () Finalizar si finalizar sub
Agregue el siguiente código después del código de manejo de eventos DrawItem de MenuItem. El siguiente código define el evento MeasureItem de MenuItem. En este evento, se establecen la longitud y la altura del nuevo elemento de menú Private Sub MenuItem (ByVal). remitente Como objeto ByVal e Como sistema Windows Forms MeasureItemEventArgs ) Maneja MenuItem MeasureItem e ItemWidth = Establece el ancho del elemento del menú e ItemHeight = Establece la altura del elemento del menú End Sub
Después de completar los pasos anteriores, entonces en el controlador de eventos MeasureItem de MenuItem Luego agregue el siguiente código El siguiente código define el evento DrawItem de MenuItem Su función es volver a dibujar el elemento del menú abierto Private Sub MenuItem _DrawItem (ByVal sender As Object ByVal e As System Windows Forms DrawItemEventArgs). Maneja MenuItem DrawItem Dim rfBound As RectánguloF = Nuevo RectánguloF ( e Bounds El parámetro obtiene el área rectangular del elemento de menú y lo almacena en la instancia de tipo Rectángulo. La instancia de tipo Rectángulo es similar a la instancia de tipo RectánguloF, pero la función de dibujar el menú en el código subyacente es diferente Dim s As MenuItem = CType (remitente MenuItem) | Dim s As String = s Text Dim sfTemp As StringFormat = New StringFormat ( ) sfTemp Alignment = StringAlignment Center sfTemp LineAlignment = StringAlignment Center Dim rcText As. RectánguloF = rfBound rcText Ancho = Gráficos DrawString ( s Nueva fuente ( Veranda ) Nuevo SolidBrush ( Color azul ) rcText sfTemp ) Gráficos DrawRectangle ( Nuevo lápiz ( Nuevo SolidBrush ( Color LightGray ) ) rfBound ) Si e State = ( DrawItemState NoAccelerator o DrawItemState seleccionado ) Luego, Graphics FillRectangle (Nuevo SolidBrush (Color LightYellow) rfBound) Graphics DrawS
tring (s Nueva fuente (Veranda FontStyle Bold o FontStyle Subrayado) Nuevo SolidBrush (Color rojo) rcText sfTemp) | e Gráficos DrawRectangle (Nuevo lápiz (Nuevo SolidBrush (Color negro)) rfBound) e DrawFocusRectangle() | p>
Agregue el siguiente código después del código de manejo de eventos DrawItem de MenuItem. El siguiente código define el evento MeasureItem de MenuItem. En este evento, se establece la longitud y la altura del nuevo elemento de menú Private Sub MenuItem _MeasureItem (ByVal sender As). Object ByVal e As System Windows Forms MeasureItemEventArgs ) Maneja MenuItem MeasureItem e ItemWidth = Establece el ancho del elemento del menú e ItemHeight = Establece la altura del elemento del menú End Sub
Después de completar correctamente los pasos anteriores, el El menú dibujado a mano presentado en este artículo está completo. Haga clic en este momento. Presione la tecla de acceso directo F para ejecutar el programa y obtener la interfaz de ejecución que se muestra en la imagen.
6. Resumen
El contenido principal de este artículo es presentar el diseño y la creación de menús en VB NET. No solo presenta el uso del diseñador de menús para diseñar menús estáticamente, sino que también presenta el método de implementación dinámica. crear menús usando la clase MainMenu, la clase MenuItem y la clase ContextMenu Al crear, primero debe comprender que el tipo de menú que desea crear es un menú desplegable. Primero, debe crear una instancia de MainMenu, que es un menú emergente. menú arriba. Primero, debe crear una instancia de ContextMenu. Luego, cree el menú correspondiente de acuerdo con la estructura de composición en el menú, es decir, la relación padre-hijo en los elementos del menú. Finalmente, muestre el menú desplegable. -menú desplegable, asígnelo a la propiedad Menú del formulario. Si es un menú emergente, asígnelo al componente visual o a la propiedad ContextMenu del formulario para que el menú creado dinámicamente se pueda mostrar dinámicamente. la creación del menú se considera completa
Además, este artículo presenta los métodos de implementación y las precauciones para dibujar menús personalizados en Visual Basic Net. Al dibujar menús personalizados, lo más importante es dominar el uso de los eventos DrawItem y. Eventos MeasureItem y los métodos que se utilizarán al dibujar menús Aunque los menús dibujados en este artículo no son hermosos, puede modificarlos a través de los métodos introducidos en este artículo para lograr un menú más hermoso y personalizado. Finalmente, recuerde hacerlo primero. establezca la propiedad OwnerDraw del elemento del menú en True al dibujar el menú
lishixinzhi/Article /program/net/201311/15454