Bonjour, est-il possible de cacher simplement une partie d'une fenetre ? Par exemple juste le bas de la fenetre ? Et si oui comment peut-on faire ?
merci d'avance !
Cacher une partie de fenetre
Salut !
Si tu veux, tu peux faire un rectangle rouge (ou bleu, rose, etc, du moment que tu connait le numéro de ta couleur
), ensuite, tu peux faire ceci pour dire à ta fenêtre qu'elle pourra "jouer" avec la transparence :
style = GetWindowLong_(WindowID(#maFenetre), #GWL_EXSTYLE)
SetWindowLong_(WindowID(#maFenetre), #GWL_EXSTYLE, style|#WS_EX_LAYERED)
Puis tu utilises ceci pour retirer tous les pixels de ta couleur :
SetLayeredWindowAttributes_(WindowID(#maFenetre), color, alpha, dwFlag)
dwFlag peut être soit :
- #LWA_COLORKEY pour dire que tu supprimeras une couleur de ta fenêtre (l'argument utilisé sera donc color qui est le code couleur que tu veux retirer)
- #LWA_ALPHA pour dire que tu mettra ta fenêtre plus ou moins opaque (l'argument utilisé sera alpha compris entre 0 et 255)
- Ou tu peux aussi combiner les deux !
Voila !
Si tu veux, tu peux faire un rectangle rouge (ou bleu, rose, etc, du moment que tu connait le numéro de ta couleur

style = GetWindowLong_(WindowID(#maFenetre), #GWL_EXSTYLE)
SetWindowLong_(WindowID(#maFenetre), #GWL_EXSTYLE, style|#WS_EX_LAYERED)
Puis tu utilises ceci pour retirer tous les pixels de ta couleur :
SetLayeredWindowAttributes_(WindowID(#maFenetre), color, alpha, dwFlag)
dwFlag peut être soit :
- #LWA_COLORKEY pour dire que tu supprimeras une couleur de ta fenêtre (l'argument utilisé sera donc color qui est le code couleur que tu veux retirer)
- #LWA_ALPHA pour dire que tu mettra ta fenêtre plus ou moins opaque (l'argument utilisé sera alpha compris entre 0 et 255)
- Ou tu peux aussi combiner les deux !
Voila !
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Le probleme, c'est que lorsqu'on rend une couleur transparente, on voit quand meme la fenetre. Moi je voudrais qu'une partie de la fenetre disparaisse completement (je sais pas si je suis bien clair). En gros, dans ce code, je voudrais que la partie rouge de la fenetre disparaisse:
Code : Tout sélectionner
OpenWindow(0, 100, 100, 200, 200, "test", #PB_Window_BorderLess)
StartDrawing(WindowOutput(0))
Box(0,0,200,50,RGB(255,0,0))
StopDrawing()
style = GetWindowLong_(WindowID(0), #GWL_EXSTYLE)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, style|#WS_EX_LAYERED)
Delay(1000)
SetLayeredWindowAttributes_(WindowID(0), RGB(255,0,0), 120, #LWA_COLORKEY)
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
comme ça tu peux couper ta fenetre 

Code : Tout sélectionner
OpenWindow(0, 100, 100, 200, 200, "test",#PB_Window_SystemMenu )
StartDrawing(WindowOutput(0))
Box(0,0,200,50,RGB(255,0,0))
StopDrawing()
; ************************** et voila **********************************************
Region1 = CreateRectRgn_(0 ,0,250 ,200 )
Region2 = CreateRectRgn_(0, 0, 250, 10) ; augmente le 10 ici <<<<<<<<<<<<<<<<<<
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF)
SetWindowRgn_(WindowID(0), Region1, #True)
UpdateWindow_(WindowID(0))
DeleteObject_(Region1)
DeleteObject_(Region2)
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
; *********************************************************************************