Page 1 sur 1
Cacher une partie de fenetre
Publié : dim. 15/mars/2009 10:50
par lepiaf31
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 !
Publié : dim. 15/mars/2009 11:02
par KrisJNT
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 !
Publié : dim. 15/mars/2009 11:31
par lepiaf31
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
Publié : dim. 15/mars/2009 11:43
par Jacobus
Il faut:
HideGadget(#gadget,1)
et
ResizeWindow(#window,x,y)
Publié : dim. 15/mars/2009 11:54
par lepiaf31
Merci, en effet, je me suis débrouillé avec un resizewindow()
Publié : dim. 15/mars/2009 12:10
par Backup
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
; *********************************************************************************