Visual Basic - Pregunta sobre el form , me pueden ayudar

Life is soft - evento anual de software empresarial
 
Vista:

Pregunta sobre el form , me pueden ayudar

Publicado por Luis Perez (27 intervenciones) el 19/12/2006 06:01:48
Hola a todos

Mi pregunta es , hay alguna manera de que el form no sea cuadrada? , por ejemplo yo quiero que sea redonda , esto es posible?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pregunta sobre el form , me pueden ayudar

Publicado por Cris (27 intervenciones) el 19/12/2006 12:05:15
Si. Hay una utilidad llamada VB Shaped Form Creator que hace un formulario con la forma deseada, cuadrado, redondo, el contorno de una imagen...

No estoy segura, creo que es freeware. Se descarga de una cuantas páginas. Prueba en Softonic.
Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta sobre el form , me pueden ayudar

Publicado por Skatu (8 intervenciones) el 19/12/2006 16:58:30
Hola que tal.
Hay dos funciones API que se encargan de ello. Una es "CreatePolygonRgn" para generar un polígono y en concreto "CreateEllipticRgn" para generar una elipse y un círculo. Una ver generado el polígono se utiliza "SetWindowRgn" para asignarl la región generada al Form. Puedes encontrar información en inglés sobre estas funciónes en la siguiente dirección.

www.allapi.net

Espero que te sirva

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta sobre el form , me pueden ayudar

Publicado por Skatu (8 intervenciones) el 20/12/2006 19:23:26
Aquí tienes un ejemplo

Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Private Sub Form_Load()
Dim Xs As Long, Ys As Long
Ys = Me.Height / Screen.TwipsPerPixelY
‘Si queremos que sea elíptica...
'Xs = Me.Width / Screen.TwipsPerPixelX
‘En cambio si queremos que sea circular…
Xs = Ys
SetWindowRgn hwnd, CreateEllipticRgn(0, 0, Xs, Ys), True
End Sub
‘--------------------------------------
Si quieres que la forma no sea circular Hay que utilizar la función:

Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

‘Declaramos una estructura del siguiente tipo
Private Type POINTAPI
-X As Long
-Y As Long
End Type

‘Creamos una estructura que es una matriz en la cual vamos a introducir las coordenadas de los puntos de la figura, en el ejemplo es un triángulo.
Dim Puntos(3) As POINTAPI
Dim Region As Long


Private Sub Form_Load()
‘Guardamos las coordenadas del triángulo en la estructura (TwipsPerPixelX es para pasar a unidades gráficas, o algo así, je, je)
Puntos(0).X = (Me.Width / Screen.TwipsPerPixelX) / 2 ‘En la mitad del Form
Puntos(0).Y = 0 ‘En la parte superior
‘Punto(1) es la esquina inferior izquierda
Puntos(1).X = 0 ‘En la parte derecha del Form
Puntos(1).Y = Me.Height / Screen.TwipsPerPixelY ‘En la parte inferior del Form
‘Punto(2) es la esquina inferior derecha
Puntos(2).X = Me.Width / Screen.TwipsPerPixelX
Puntos(2).Y = Me.Height / Screen.TwipsPerPixelY

Region = CreatePolygonRgn(Puntos(0), UBound(Puntos), 1)
SetWindowRgn Me.hwnd, Region, True
End Sub

Nota: - corresponde a una tabulación
Espero que te funcione y te sirva.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar