Rendre Tanslucide un UserControl, possible ?

kakenette Messages postés 218 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 15 novembre 2009 - 4 sept. 2008 à 00:58
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 sept. 2008 à 03:52
Bonjour, Voilà, je sais qu’il est possible de
rendre translucide une fenêtre en connaissant son HWND. J'aurai voulu savoir si
c'est possible de faire un peut près pareil mais pour un UserControl.


J'ai cherché avant de poster ici bien entendue, et j'ai peut être trouvé quelque
chose qui pourrait m'aider...

Qu'en pensez-vous ?


http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=60476&lngWId=1

Merci d'avoir pris quelques instants pour lire ce message :D

kakenette

4 réponses

Utilisateur anonyme
4 sept. 2008 à 01:35
Salut,

Il suffit d'appliquer les méthodes mais avec l'handle de l'usercontrol au lieu de celui de la form.

__________
  Kenji
0
Utilisateur anonyme
4 sept. 2008 à 01:46
Un petit exemple :
Option Explicit

Private Const SRCCOPY = &HCC0020
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5

Private Type POINTAPI
  x As Long
  y As Long
End Type
Private Type RECT
  TopLeft As POINTAPI
  BottomRight As POINTAPI
End Type

Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
  ByVal hdc As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
  ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
  ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
  ByVal dwRop As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
  ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, _
  lpRect As RECT) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, _
  lpPoint As POINTAPI) As Long

Private Sub UserControl_Show()
  Dim ParenthWnd As Long
  Dim ParenthDC As Long
  ParenthWnd = GetParent(hwnd)
  ParenthDC = GetDC(ParenthWnd)

  UserControl.AutoRedraw = True
  Call ShowWindow(hwnd, SW_HIDE)

  DoEvents

  Dim Rc As RECT
  Call GetWindowRect(UserControl.hwnd, Rc)
  Call ScreenToClient(ParenthWnd, Rc.TopLeft)
  Call ScreenToClient(ParenthWnd, Rc.BottomRight)
  Call BitBlt(UserControl.hdc, 0, 0, Rc.BottomRight.x - Rc.TopLeft.x, _
    Rc.BottomRight.y - Rc.TopLeft.y, ParenthDC, Rc.TopLeft.x, Rc.TopLeft.y, _
    SRCCOPY)
  UserControl.Picture = UserControl.Image
  Call ReleaseDC(ParenthWnd, ParenthDC)

  UserControl.DrawMode = VBRUN.DrawModeConstants.vbMaskPen
  UserControl.Line (0, 0)-(UserControl.ScaleWidth, UserControl.ScaleHeight), _
    UserControl.BackColor, BF
  Call ShowWindow(hwnd, SW_SHOW)
End Sub
<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net
__________
  Kenji
0
kakenette Messages postés 218 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 15 novembre 2009 1
4 sept. 2008 à 03:18
Merci pour cet exemple que j'ai pu tester et qui fonctionne
bien mais là où ça ce complique, c'est que mon UserControl je l'aurai voulu
translucide à 20% par exemple et où sa ce complique encore plus, c'est que j’aurai
voulu que sa s'applique à tout ce qui est dans mon UserControl. Mais je vais déjà
voir se que je peux faire avec cet exemple, merci beaucoup.



kakenette
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 sept. 2008 à 03:52
salut,

utilise plutôt l'API AlphaBlend, tu pourras gérer ton pourcentage.
le code de Kenji te reste utile pour récupérer le fond

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
Rejoignez-nous