Como hacer esto medio transparente?

Iniciado por fedefrankk, 27 Mayo 2009, 07:07 AM

0 Miembros y 2 Visitantes están viendo este tema.

fedefrankk

Hola a todos como ven en la figura queda un poco feo ese cuadro blanco. (con el fondo de windows vista ) . quisiera saber si se puede hacer un 50% de tranparencia, en este caso use un picturebox.. pero si se puede hacer con cualquier cosa lo hago..
muchas gracias a todos
saludos




Dessa

Adrian Desanti

Spider-Net

Eso vuelve transparente todo el formulario y todo lo que éste contiene y creo que él lo que quiere volver transparente es sólo el picturebox blanco, que yo sepa no hay forma de hacer eso, aunque sería fácil hacerlo con photoshop y ponerlo como imagen de fondo del form y listo.

Saludos.

Dessa

#3
Hola spider-net, eso vuelve transparente a todo el form1 pero no al form2 (tal vez pueda adaptarlo de alguna manera) (es solo una idea, si no sirve la descarta)

Saludos




Adrian Desanti

Spider-Net

Cita de: Dessa en 27 Mayo 2009, 16:45 PM
Hola spider-net, eso vuelve transparente a todo el form1 pero no al form2 (tal vez pueda adaptarlo de alguna manera) (es solo una idea, si no sirve la descarta)

Saludos

Ahhh ya, lo que pasa es que el creo que tiene sólo un form,que lo blanco no es otro form sino un picturebox que contiene el formulario ese. De todas formas igual puede adaptarlo tal y como tú dices Dessa.

Un saludo.

fedefrankk

Buenas,, muchas gracias por responder, efectivamente estoy buscando solamente que se haga transparente el picture o cualquier cuadrado que se pueda poner... y no el form.. pero esto del form esta buenisimo no lo conocia.. muchas gracias a todos
saludos
Fede
;-)

Dessa

Encontre este code que tenia, probalo si sirve , te hace el formulario transparente pero no los controles, si combinas los dos codes (uno en cada formulario en el mismo proyecto) podes lograr el efecto que buscabas.






Option Explicit

Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long

Public Sub GlassifyForm(frm As Form)
Const RGN_DIFF = 4
Const RGN_OR = 2

Dim outer_rgn As Long
Dim inner_rgn As Long
Dim wid As Single
Dim hgt As Single
Dim border_width As Single
Dim title_height As Single
Dim ctl_left As Single
Dim ctl_top As Single
Dim ctl_right As Single
Dim ctl_bottom As Single
Dim control_rgn As Long
Dim combined_rgn As Long
Dim ctl As Control

    If WindowState = vbMinimized Then Exit Sub

    ' Create the main form region.
    wid = ScaleX(Width, vbTwips, vbPixels)
    hgt = ScaleY(Height, vbTwips, vbPixels)
    outer_rgn = CreateRectRgn(0, 0, wid, hgt)

    border_width = (wid - ScaleWidth) / 2
    title_height = hgt - border_width - ScaleHeight
    inner_rgn = CreateRectRgn( _
        border_width, _
        title_height, _
        wid - border_width, _
        hgt - border_width)

    ' Subtract the inner region from the outer.
    combined_rgn = CreateRectRgn(0, 0, 0, 0)
    CombineRgn combined_rgn, outer_rgn, _
        inner_rgn, RGN_DIFF

    ' Create the control regions.
    For Each ctl In Controls
        If ctl.Container Is frm Then
            ctl_left = ScaleX(ctl.Left, frm.ScaleMode, vbPixels) _
                + border_width
            ctl_top = ScaleX(ctl.Top, frm.ScaleMode, vbPixels) _
                + title_height
            ctl_right = ScaleX(ctl.Width, frm.ScaleMode, vbPixels) _
                + ctl_left
            ctl_bottom = ScaleX(ctl.Height, frm.ScaleMode, vbPixels) _
                + ctl_top
            control_rgn = CreateRectRgn( _
                ctl_left, ctl_top, _
                ctl_right, ctl_bottom)
            CombineRgn combined_rgn, combined_rgn, _
                control_rgn, RGN_OR
        End If
    Next ctl

    ' Restrict the window to the region.
    SetWindowRgn hWnd, combined_rgn, True
End Sub

Private Sub Command1_Click()
End

End Sub

Private Sub Form_Load()
  Me.PaletteMode = 1
  Me.ScaleMode = 3
  Text1 = 1: Text2 = 2: Text3 = 3
  Command1.Caption = "Salir"
End Sub

Private Sub Form_Resize()
    GlassifyForm Me
End Sub



Saludos
Adrian Desanti

fedefrankk

 ;-) ;-) ;-)

Buenisimo, muchisimas gracias por el codigo ahora lovoy a probar

muchas gracias de nuevo
saludos

Spider-Net

¿Hace transparente el formulario pero no los controles? Qué bueno! ese me va a servir a mí también para un programita que estoy haciendo xDD

Gracias Dessa! :D

Dessa

Sabia que tenia ese code por ahí  (vaya uno a saber de quien es)

PD: No me tiró ningun error pero prueben, saludos



Adrian Desanti