Cacher une partie de fenetre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Cacher une partie de fenetre

Message 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 !
KrisJNT
Messages : 110
Inscription : ven. 31/oct./2008 16:51

Message 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 :D ), 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 !
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message 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
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Il faut:
HideGadget(#gadget,1)
et
ResizeWindow(#window,x,y)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message par lepiaf31 »

Merci, en effet, je me suis débrouillé avec un resizewindow()
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
; *********************************************************************************


Répondre