Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Form semitrasparente
Forum - Visual Basic 6 - Form semitrasparente

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
gaffre (Normal User)
Pro


Messaggi: 65
Iscritto: 17/06/2008

Segnala al moderatore
Postato alle 14:39
Sabato, 23/08/2008
Ciao a tutti!
Prima di fare questa domanda ho un po' cercato tra i topic vecchi e non ho trovato l'effetto desiderato. Vorrei sapere se c'è un modo per far diventare il form e/o i pulsanti un po' trasparenti tipo 40%, oppure il form 60 e il resto degli oggetti 40. Insomma qualcosa del genere è possibile?

Grazie

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:51
Sabato, 23/08/2008
penso non esista in vb6, forse in delphi o vb.net,

ma non credo

cmq io penso di no

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 15:58
Sabato, 23/08/2008
invece è possibile:
Codice sorgente - presumibilmente VB.NET

  1. in un modulo:
  2. Option Explicit
  3.  
  4. Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  5. Private Declare Function UpdateLayeredWindow Lib "user32" (ByVal hWnd As Long, ByVal hdcDst As Long, pptDst As Any, psize As Any, ByVal hdcSrc As Long, pptSrc As Any, crKey As Long, ByVal pblend As Long, ByVal dwFlags As Long) As Long
  6. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  7. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  8.  
  9. Private Const GWL_EXSTYLE = (-20)
  10. Private Const LWA_COLORKEY = &H1
  11. Private Const LWA_ALPHA = &H2
  12. Private Const ULW_COLORKEY = &H1
  13. Private Const ULW_ALPHA = &H2
  14. Private Const ULW_OPAQUE = &H4
  15. Private Const WS_EX_LAYERED = &H80000
  16.  
  17. Public Function isTransparent(ByVal hWnd As Long) As Boolean
  18. On Error Resume Next
  19. Dim Msg As Long
  20. Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  21. If (Msg And WS_EX_LAYERED) = WS_EX_LAYERED Then
  22.   isTransparent = True
  23. Else
  24.   isTransparent = False
  25. End If
  26. If Err Then
  27.   isTransparent = False
  28. End If
  29. End Function
  30.  
  31. Public Function MakeTransparent(ByVal hWnd As Long, Perc As Integer) As Long
  32. Dim Msg As Long
  33. On Error Resume Next
  34. If Perc < 0 Or Perc > 255 Then
  35.   MakeTransparent = 1
  36. Else
  37.   Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  38.   Msg = Msg Or WS_EX_LAYERED
  39.   SetWindowLong hWnd, GWL_EXSTYLE, Msg
  40.   SetLayeredWindowAttributes hWnd, 0, Perc, LWA_ALPHA
  41.   MakeTransparent = 0
  42. End If
  43. If Err Then
  44.   MakeTransparent = 2
  45. End If
  46. End Function
  47.  
  48. Public Function MakeOpaque(ByVal hWnd As Long) As Long
  49. Dim Msg As Long
  50. On Error Resume Next
  51. Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  52. Msg = Msg And Not WS_EX_LAYERED
  53. SetWindowLong hWnd, GWL_EXSTYLE, Msg
  54. SetLayeredWindowAttributes hWnd, 0, 0, LWA_ALPHA
  55. MakeOpaque = 0
  56. If Err Then
  57.   MakeOpaque = 2
  58. End If
  59. End Function
  60.  
  61. poi nel form:
  62.  
  63. Private Sub Form_Load()
  64. MakeTransparent Me.hWnd, VALORE da 0 a 255
  65. End Sub



dove ho scritto VALORE da 0 a 255 più il numero starà vicino al 255 e più il form sarà visibile, più il numero si avvicinerà allo 0 più il form sarà trasparente. (mi pare sia così l'ordine).

Ultima modifica effettuata da GrG il 23/08/2008 alle 15:58
PM Quote
Avatar
gaffre (Normal User)
Pro


Messaggi: 65
Iscritto: 17/06/2008

Segnala al moderatore
Postato alle 20:08
Sabato, 23/08/2008
Grazie mille ora provo :k:

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:42
Sabato, 23/08/2008
Prego :D
Se hai qualke problema posta.

PM Quote
Avatar
gaffre (Normal User)
Pro


Messaggi: 65
Iscritto: 17/06/2008

Segnala al moderatore
Postato alle 13:58
Domenica, 24/08/2008
effetto magnifico, veramente splendido grazie!

PM Quote
Avatar
super rambo (Normal User)
Pro


Messaggi: 135
Iscritto: 04/06/2008

Segnala al moderatore
Postato alle 15:32
Domenica, 05/10/2008
Scusate se rispondo ad un topic vecchio e non ne apro uno nuovo.. ho provato il codice, e funziona. per impostare la trasparenza ho aggiunto una una slider con questo codice:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Slider1_Scroll()
  2. MakeTransparent Form2.hwnd, Slider1.Value
  3. End Sub


vorrei sapere come fare ad annullare l'effetto perchè se metto la slider al massimo un pò di trasparenza rimane sempre io vorrei che tramite un command l'effetto svanisca..si può fare??

Ultima modifica effettuata da super rambo il 05/10/2008 alle 15:34
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:04
Domenica, 05/10/2008
se lo fai manualmente (mettendo 255) rimane semprel a trasparenza?

PM Quote
Avatar
super rambo (Normal User)
Pro


Messaggi: 135
Iscritto: 04/06/2008

Segnala al moderatore
Postato alle 16:08
Domenica, 05/10/2008
lol ho fatto un errore stupidissimo invece di 255 avevo letto 225 ecco perchè non veniva!! adesso funziona anche con la slider perchè prima avevo impostato il massimo a 225.. scusate!!

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo