Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

como hago formularios que no sean rectangulares

Estas en el tema de como hago formularios que no sean rectangulares en el foro de Visual Basic clásico en Foros del Web. Hola a todos. me gusta darle aspectos diferentes a las aplicaciones hechas en vb pero escuche que hay una forma de cambiar la forma rectangular ...
  #1 (permalink)  
Antiguo 23/04/2005, 17:34
 
Fecha de Ingreso: enero-2005
Mensajes: 6
Antigüedad: 19 años, 3 meses
Puntos: 0
como hago formularios que no sean rectangulares

Hola a todos.
me gusta darle aspectos diferentes a las aplicaciones hechas en vb pero escuche que hay una forma de cambiar la forma rectangular de los formularios, como lo hago alguien sabe?
gracias de antemano por cualquier ayuda.
  #2 (permalink)  
Antiguo 24/04/2005, 21:44
Usuario no validado
 
Fecha de Ingreso: abril-2005
Mensajes: 57
Antigüedad: 19 años
Puntos: 0
hola quieres hacer un rectangulo circular eso si lo se hacer
  #3 (permalink)  
Antiguo 26/04/2005, 01:10
Usuario no validado
 
Fecha de Ingreso: abril-2005
Mensajes: 57
Antigüedad: 19 años
Puntos: 0
perdon un formulario circular
  #4 (permalink)  
Antiguo 26/04/2005, 06:09
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por macape1102
perdon un formulario circular
Usa "Editar" en vez de postear otra réplica, por favor.

Para crear formularios no rectangulares debes usar la API. Supongo que quieres código ya hecho, pero eso no te lo voy a dar.
  #5 (permalink)  
Antiguo 26/04/2005, 08:33
Usuario no validado
 
Fecha de Ingreso: abril-2005
Mensajes: 57
Antigüedad: 19 años
Puntos: 0
no envidioso si sabes leer lo que escribi anteriormente le estoy ayudando a runbengx y pues no creas que eres el unico que sabes ya baja tus sumitos pues caes gordo sales cuidate mi estimado te mando saludos a y para quienes quieran saber como crear el formulario circular les pongo el codigo y no se ha tengan de este envidioso el foro consta de uta demasiados colaboradores que pueden ayudar y sin condiciones ni malos tratos byte
  #6 (permalink)  
Antiguo 26/04/2005, 09:52
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por macape1102
no envidioso si sabes leer lo que escribi anteriormente le estoy ayudando a runbengx y pues no creas que eres el unico que sabes ya baja tus sumitos pues caes gordo sales cuidate mi estimado te mando saludos a y para quienes quieran saber como crear el formulario circular les pongo el codigo y no se ha tengan de este envidioso el foro consta de uta demasiados colaboradores que pueden ayudar y sin condiciones ni malos tratos byte
Este tío es imbécil.

Relee el post, estaba contestando a rubengx diciéndole que debía usar la API de Windows, no a ti, maldito egocéntrico.
  #7 (permalink)  
Antiguo 26/04/2005, 10:29
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por macape1102
no envidioso si sabes leer lo que escribi anteriormente le estoy ayudando a runbengx y pues no creas que eres el unico que sabes ya baja tus sumitos pues caes gordo sales cuidate mi estimado te mando saludos a y para quienes quieran saber como crear el formulario circular les pongo el codigo y no se ha tengan de este envidioso el foro consta de uta demasiados colaboradores que pueden ayudar y sin condiciones ni malos tratos byte
A mi si me cae bien MaxExtreme
  #8 (permalink)  
Antiguo 26/04/2005, 10:31
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Developer9
A mi si me cae bien MaxExtreme


A mi me cae bien toda la gente, salvo cuando dicen paridas muy gordas :)
  #9 (permalink)  
Antiguo 26/04/2005, 10:36
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por MaxExtreme


A mi me cae bien toda la gente, salvo cuando dicen paridas muy gordas :)
Una pregunta... porque si tu respondes las inquietudes y problemas de bastantes post y haces muchas criticas constructivas porque el moderador no te designa colaborador?
  #10 (permalink)  
Antiguo 26/04/2005, 11:00
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Que manera mas rastrera de chuparle a alguien las medias, cada dia me das mas verguenza ajena Developer9. Hacele un favor al mundo y deja de demostrar que sos un newbie.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 26/04/2005, 11:43
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 20 años, 9 meses
Puntos: 0
Cita:
Iniciado por macape1102
para quienes quieran saber como crear el formulario circular les pongo el codigo
y adonde está el codigo?
  #12 (permalink)  
Antiguo 26/04/2005, 11:52
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 1
Muho hablan pero el codigo mandenlo pues,quiero sacarle provecho al tiempo q vengo aqui
  #13 (permalink)  
Antiguo 26/04/2005, 12:12
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
Hola,

MaxEtreme, yo no quiero código ya hecho, sólo quiero saber por donde empezar.

¿El API me permitiría hacer formularios de cualquier geométria?

Muchas gracias.

(me he colado en el post )
  #14 (permalink)  
Antiguo 26/04/2005, 12:27
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por jariza
Hola,

MaxEtreme, yo no quiero código ya hecho, sólo quiero saber por donde empezar.

¿El API me permitiría hacer formularios de cualquier geométria?

Muchas gracias.

(me he colado en el post )
Por supuesto. Fíjate en los Windows Media Players como ejemplo a la vista: Máscaras y demás.

No lo he investigado, pero si no me equivoco lo hacen pintando la aplicación "a mano". Al igual que esos juegos que se ejecutan y puedes lanzar cosas al escritorio y "romperle" . Pero para eso necesitas dominar antes las funciones de dibujo de Windows.
  #15 (permalink)  
Antiguo 26/04/2005, 12:28
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Developer9
Una pregunta... porque si tu respondes las inquietudes y problemas de bastantes post y haces muchas criticas constructivas porque el moderador no te designa colaborador?
Que será... será...
  #16 (permalink)  
Antiguo 26/04/2005, 12:38
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 1
hey MaxEtreme, nose si tengas algun ejmplito muy sencillo q tengas para empezar y poder guiarme nose si es mucho pedir pero pudieras mandarlo gracias
  #17 (permalink)  
Antiguo 26/04/2005, 12:42
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por loquillo7
hey MaxEtreme, nose si tengas algun ejmplito muy sencillo q tengas para empezar y poder guiarme nose si es mucho pedir pero pudieras mandarlo gracias

Dije:

Cita:
Iniciado por MaxExtreme
No lo he investigado
Pero en cualquier caso, empieza como ya también dije por manejar las funciones gráficas de Windows antes de intentar hacer algo más complicado.

http://www.functionx.com/win32/

Extenso tutorial sobre ello (API gráfica de Windows).


PD: Mi nick es MaxExtreme
  #18 (permalink)  
Antiguo 26/04/2005, 16:42
 
Fecha de Ingreso: enero-2005
Mensajes: 6
Antigüedad: 19 años, 3 meses
Puntos: 0
hola compañeros
propuse este tema para resolver una incognita y para que otros se beneficien con las respuestas, no para que se entablen discuciones ya que ese no es el objetivo de un foro gracias a quienes de alguna forma intenteron ayudar y a los demás les propongo darle el uso adecuado a este foro, no les parece!!!
saludos a todos
  #19 (permalink)  
Antiguo 26/04/2005, 23:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola Rubengx
Investiga un poco sobre las funciones gráficas de Windows, hay una función que se llama SetWindowRgn que, por ejemplo, usada con CreateEllipticRgn te genera un formulario eliptico.

Tambien hay un programa que se llama VB Shaped Form Creator que te permite crear variadas formas para tu formulario y hasta con efectos animados, es buenisimo y es gratis.
Pruebalo quizas te sirva
  #20 (permalink)  
Antiguo 28/04/2005, 04:27
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
De acuerdo

Hola,

Bebecita, el VB Shaped Form Creator es genial...

...creo que me acabo de enamorar.

VB Shaped Form Creator
  #21 (permalink)  
Antiguo 28/04/2005, 20:54
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
shape si utilizar un ocx

en un modulo:
Option Explicit

Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Const RGN_OR = 2
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

Public Function MakeRegion(picSkin As PictureBox) As Long

' Make a windows "region" based on a given picture box'
' picture. This done by passing on the picture line-
' by-line and for each sequence of non-transparent
' pixels a region is created that is added to the
' complete region. I tried to optimize it so it's
' fairly fast, but some more optimizations can
' always be done - mainly storing the transparency
' data in advance, since what takes the most time is
' the GetPixel calls, not Create/CombineRgn

Dim X As Long, Y As Long, StartLineX As Long
Dim FullRegion As Long, LineRegion As Long
Dim TransparentColor As Long
Dim InFirstRegion As Boolean
Dim InLine As Boolean ' Flags whether we are in a non-tranparent pixel sequence
Dim hDC As Long
Dim PicWidth As Long
Dim PicHeight As Long

hDC = picSkin.hDC
PicWidth = picSkin.ScaleWidth
PicHeight = picSkin.ScaleHeight

InFirstRegion = True: InLine = False
X = Y = StartLineX = 0

' The transparent color is always the color of the
' top-left pixel in the picture. If you wish to
' bypass this constraint, you can set the tansparent
' color to be a fixed color (such as pink), or
' user-configurable
TransparentColor = GetPixel(hDC, 0, 0)

For Y = 0 To PicHeight - 1
For X = 0 To PicWidth - 1

If GetPixel(hDC, X, Y) = TransparentColor Or X = PicWidth Then
' We reached a transparent pixel
If InLine Then
InLine = False
'--------Modificando estas cordenadas puedes hacer que se ajuste bien la imagen-----
LineRegion = CreateRectRgn(StartLineX + 6, Y + 29, X, Y + 30)

If InFirstRegion Then
FullRegion = LineRegion
InFirstRegion = False
Else
CombineRgn FullRegion, FullRegion, LineRegion, RGN_OR
' Always clean up your mess
DeleteObject LineRegion
End If
End If
Else
' We reached a non-transparent pixel
If Not InLine Then
InLine = True
StartLineX = X

End If
End If
Next
Next

MakeRegion = FullRegion
End Function



Y en el formulario
Option Explicit

Sub Cargar_Skin()
'Este codigo es el responsable de cargar y crear las trasparencias en la ventana.
'Se necesita el modulo para ke funcione el programa.
'El skin lo carga en el control picture, ke es el ke dara la imagen del formulario.
Dim WindowRegion As Long

picMainSkin.ScaleMode = vbPixels
picMainSkin.AutoRedraw = True
picMainSkin.AutoSize = True
picMainSkin.BorderStyle = vbBSNone
Me.BorderStyle = vbBSNone

'Carga el fichero BMP con la imagen deseada de la ventana.
Set picMainSkin.Picture = LoadPicture("d:\Mis documentos\Visual Basic Proyectos\Formularios\shape sin ocx\Image1.bmp")

'Automaticamente se adapta la ventana al tamaño del skin.
Me.Width = picMainSkin.Width
Me.Height = picMainSkin.Height

'Crea la trasparencia usando el color ke linda con los limites de la imagen,
'en este caso el negro (puede ser otro color,depende el ke haga limite).
WindowRegion = MakeRegion(picMainSkin)
SetWindowRgn Me.hWnd, WindowRegion, True
End Sub

Private Sub Form_Load()
Cargar_Skin
End Sub

Private Sub picMainSkin_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Nos permite mover el formulario por la pantalla.

ReleaseCapture
SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&

End Sub
  #22 (permalink)  
Antiguo 29/04/2005, 16:38
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Con esto tambien se puede cambiar la forma del form a redondeada o eliptica:

SetWindowRgn Me.hwnd, CreateRoundRectRgn(0, 0, Me.Width \ 15, Me.Height \ 15, 50, 50), True 'Redondeado

SetWindowRgn Me.hwnd, CreateEllipticRgn(0, 0, Me.Width \ 15, Me.Height \ 15), True 'eliptico

Debes utilizar CreateRoundRectRgn, CreateEllipticRgn y SetWindowRgn...
__________________
ホルヘ・ラファエル・マルティネス・レオン
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.