Red de conocimiento informático - Problemas con los teléfonos móviles - vb crea un formulario con esquinas redondeadas

vb crea un formulario con esquinas redondeadas

El formulario es un rectángulo, pero las cuatro esquinas están redondeadas. El código de implementación es el siguiente:

'Primero, creamos un formulario y establecemos la propiedad BorderStyle del formulario en 0

'Luego declare la función API de la siguiente manera:

Función de declaración privada SetWindowRgn Lib "USER32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Función de declaración privada CreateRoundRectRgn Lib "gdi32" (ByVal X1 mientras, ByVal Y1 mientras, ByVal X2 mientras, ByVal Y2 mientras, ByVal X3 mientras, ByVal Y3 mientras) Mientras

Declaración privada Función DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

'Echemos un vistazo a estas funciones

'La función CreateRoundRectRgn se utiliza para crear un rectángulo redondeado.rectangle Definido por p>'X1,Y1 longitud, coordenadas X, Y de la esquina superior izquierda del rectángulo

'X2,Y2 Barra larga, coordenadas X, Y de la esquina inferior derecha del rectángulo

'Barra X2,Y2, coordenadas X,Y de la esquina inferior derecha del rectángulo

'Comenzaremos con algunas funciones. Coordenadas X, Y de la esquina inferior derecha del rectángulo

'X3 largo, ancho de la elipse redondeada. Va desde 0 (sin esquinas redondeadas) hasta el ancho del rectángulo (círculo completo)

'Y3 longitud, altura de la elipse redondeada.

Va desde 0 (sin esquinas redondeadas) hasta la altura del rectángulo (círculo completo)

'SetWindowRgn se usa para asignar el área redondeada creada por CreateRoundRectRgn al formulario

Se usa'DeleteObject Elimine el área creada por CreateRoundRectRgn. Esto es necesario; de lo contrario, ocupará la memoria de la computadora innecesariamente

'A continuación, declare una variable global para obtener el identificador del área, de la siguiente manera:

Dim outrgn. Mientras

'Luego ingrese el siguiente código en el formulario Evento Activate() y Evento de descarga respectivamente

Subformulario privado_ Activate()

Llame a rgnform( Yo , 20, 20) 'Llamar al subproceso

End Sub

Private Sub Form_Unload(Cancel As Integer)

DeleteObject outrgn 'Eliminar y liberar la esquina redondeada área para uso Todos los recursos del sistema

End Sub

'A continuación comenzamos a escribir el subproceso

Private Sub rgnform(ByVal frmbox As Form, ByVal fw As Long, ByVal fh As Long)

Dim w As Long, h As Long

w = frmbox.ScaleX(frmbox.Width, vbTwips, vbPixels)

h = frmbox .ScaleY(frmbox.Height, vbTwips, vbPixels)

outrgn = CreateRoundRectRgn(0, 0, w, h, fw, fh)

Llamar a SetWindowRgn(frmbox.hWnd , outrgn, True)

End Sub

"Está bien, el programa se puede ejecutar directamente, veamos cómo funciona. If Call rgnform(Me, 20, 20)

'¿Qué pasa si 20 se cambia a 50?

'¿Qué pasa con 60 y 100?

'Entonces, cambiando los valores de los parámetros fw y fh. , el círculo se puede realizar en forma angular.