vb crea un formulario con esquinas redondeadas
'Primero, creamos un formulario y establecemos la propiedad BorderStyle del formulario en 0
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) p >
'¿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.