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

control frame transparente

Estas en el tema de control frame transparente en el foro de Visual Basic clásico en Foros del Web. Bueno tengo un programa y quiero que el frame sea transparente para que se vea la imagen de fondo, no he encontrado nada en concreto ...
  #1 (permalink)  
Antiguo 28/04/2009, 11:01
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
control frame transparente

Bueno tengo un programa y quiero que el frame sea transparente para que se vea la imagen de fondo, no he encontrado nada en concreto espero se pueda.

Me han dicho que utilize el picturebox como contenedor pero el programa esta utilizando frame que se habilitan en ciertos casos y no voy a cambiarlos por que son muchos formularios y seria mas trabajo.
  #2 (permalink)  
Antiguo 28/04/2009, 19:36
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: control frame transparente

Hola, si se puede con api's seria algo asi:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Const BDR_SUNKENOUTER = &H2
  4. Private Const BDR_RAISEDINNER = &H4
  5. Private Const DT_EDITCONTROL = &H2000&
  6. Private Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
  7. Private Const BF_BOTTOM = &H8
  8. Private Const BF_LEFT = &H1
  9. Private Const BF_RIGHT = &H4
  10. Private Const BF_TOP = &H2
  11. Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
  12. Private Const DT_LEFT = &H0
  13. Private Const DT_TOP = &H0
  14.  
  15. Private Type RECT
  16.     Left As Long
  17.     Top As Long
  18.     Right As Long
  19.     Bottom As Long
  20. End Type
  21.  
  22. Private Declare Function BitBlt Lib "gdi32" (ByVal hDCDest As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hDCSrc As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  23. Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
  24. Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
  25. Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
  26. Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
  27. Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  28.  
  29. Private Sub Command1_Click()
  30.     Call FrameTransparente(Me, Frame1)
  31. End Sub
  32.  
  33. Private Sub Form_Load()
  34.     Me.AutoRedraw = True
  35. End Sub
  36.  
  37. Private Sub FrameTransparente(ByVal pForm As Form, ByVal pControl As Frame)
  38.     Static blnTrans As Boolean
  39.     Dim MyRect As RECT
  40.     Dim X1&, Y1&, X2&, Y2&
  41.     Dim strText As String
  42.     Dim TempDC As Long
  43.     blnTrans = Not blnTrans
  44.     With pControl
  45.         If blnTrans Then
  46.             pForm.Cls
  47.             pForm.ScaleMode = vbPixels
  48.             X1 = .Left - 2
  49.             Y1 = .Top - 2
  50.             X2 = X1 + .Width + 4
  51.             Y2 = Y1 + .Height + 4
  52.             SetRect MyRect, X1, Y1, X2, Y2
  53.             SetRect MyRect, X1, Y1, X2, Y2
  54.             DrawEdge pForm.hdc, MyRect, EDGE_ETCHED, BF_RECT
  55.             strText = .Caption
  56.             SetRect MyRect, X1 + 10, Y1 - 5, X2, Y2
  57.             DrawText pForm.hdc, strText, Len(strText), MyRect, DT_LEFT Or DT_TOP
  58.             TempDC = GetDC(.hWnd)
  59.             BitBlt TempDC, 0, 0, .Width, .Height, .Parent.hdc, .Left, .Top, vbSrcCopy
  60.         Else
  61.             pForm.Cls
  62.             .Refresh
  63.         End If
  64.     End With
  65. End Sub

pero por ahi es mejor crearte vos mismo un frame simulado con algunas lineas y te queda mejor que ese...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 28/04/2009, 19:49
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: control frame transparente

muy bien tio seguire tu consejo saludos y gracias por responder
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 00:40.