Page 1 sur 1

fade out ChangeGamma()

Publié : mar. 11/mars/2014 16:53
par jmg49
Bonjour,

Je voudrais faire du fade out... mais sur une fenêtre, il semblerait que la fonction ChangeGamma() ne soit utilisable que pour du fullscreen,

existe t il une solution de contournement ou une solution tout court ? une autre fonction ?

Merci bien ,




ps : il y a un tag Résolu pour les topics ? pour ne pas laisser les threads ouverts quand la solution a été apportée

Re: fade out ChangeGamma()

Publié : mar. 11/mars/2014 16:55
par Fig
Netmaestroavait posté ça sur le forum anglais... Tu devrais pouvoir t'en inspirer. :idea:

Code : Tout sélectionner

LoadImage(0,#PB_Compiler_Home+"examples\sources\data\Geebee2.bmp")

OpenWindow(0,0,0,512,512,"",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_LAYERED|#WS_EX_TOOLWINDOW)
hBrush = CreatePatternBrush_(ImageID(0))
SetClassLong_(WindowID(0),#GCL_HBRBACKGROUND,hBrush)
InvalidateRect_(WindowID(0),0,1)
HideWindow(0,0)

alpha=0
Repeat
  ev=WindowEvent()
  If ev=#PB_Event_CloseWindow:End:EndIf
  SetLayeredWindowAttributes_(WindowID(0),0,alpha,#LWA_ALPHA)
  alpha+1
  Delay(20)
Until alpha=255 Or GetAsyncKeyState_(#VK_SPACE)&32768

t=ElapsedMilliseconds()
Repeat
  ev=WindowEvent()
  If ev=#PB_Event_CloseWindow:End:EndIf
 Until ElapsedMilliseconds()-t>=2000 Or GetAsyncKeyState_(#VK_SPACE)&32768

CloseWindow(0)
DeleteObject_(hBrush)

; Open screen and go on
Sinon, tu édites le titre du fil et tu mets [résolu] devant...

Résolu: fade out ChangeGamma()

Publié : mar. 11/mars/2014 17:02
par jmg49
Merci de ta réactivité

je vais regarder le code :)

Re: Résolu: fade out ChangeGamma()

Publié : mar. 11/mars/2014 17:04
par falsam
C'était une question relative à un code 2D ?

Re: fade out ChangeGamma()

Publié : mar. 11/mars/2014 18:17
par jmg49
oui un code 2d tout simple,

j'affiche mon image en DisplaySprite dans un OpenWindowedScreen, je créée un sprite box de couleur noire de même dimension que je superpose en utilisant des timers ,

je voulais maintenant tester en fade in fade out ...

Re: fade out ChangeGamma()

Publié : mar. 11/mars/2014 18:46
par majikeyric
sinon tu fais

Code : Tout sélectionner

DisplayTransparentSprite(#Sprite, x, y Intensite)
en faisant varier l'intensité de de 255 à 0.

Re: fade out ChangeGamma()

Publié : mar. 11/mars/2014 19:11
par falsam
jmg49 a écrit :oui un code 2d tout simple,
Précise le bien lors de la formulation de ta question. Le premier message manquait un peu de précision :)

Re: fade out ChangeGamma()

Publié : mar. 11/mars/2014 19:50
par Fig
JMG49>J'avais compris que tu voulais que ce soit la fenêtre qui disparaisse... :?

Re: fade out ChangeGamma()

Publié : mer. 12/mars/2014 9:41
par blendman
Le plus simple est un grand sprite (ou une box()) de la taille de ton écran dont tu changes l'alpha en fonction d'un timer.

Re: fade out ChangeGamma()

Publié : mer. 12/mars/2014 14:32
par jmg49
:D j'ai essayé avec displaytransparentsprite et modifier la valeur de intensité avec un

Code : Tout sélectionner

Event= WaitWindowEvent(2)
  ExamineKeyboard()
  For j = 0 To 255 
  DisplayTransparentSprite(#sprite2,260,150,j)
  FlipBuffers ()
  ClearScreen($0)
Next j
 


c'est exactement ce que je vouslais faire ,

mais, par contre , l'inverse ne fonctionne pas ... c'est à dire le fadeout avec :

Code : Tout sélectionner

Event= WaitWindowEvent(2)
  ExamineKeyboard()
 For h = 255 to 0
 DisplayTransparentSprite(#sprite2,260,150,h)
 FlipBuffers ()
 ClearScreen($0)
Next h
 
de plus, j'ai cru comprendre en cherchant un peu sur le forum qu'on ne pouvait pas encore faire du Step 0,1 par exemple ?? le thread était vieux , ça a été fixé ?

Merci

Re: fade out ChangeGamma()

Publié : mer. 12/mars/2014 14:37
par Backup

Code : Tout sélectionner


  For h = 255 to 0 
  
 


il ne te manque rien la ?? :roll:

par exemple

Code : Tout sélectionner


  For h = 255 to 0  step -1 
  
 
c'est pas la peine de lire des vieux Topic, et de les lire en diagonal :roll:

il n'est pas possible de faire ceci :

Code : Tout sélectionner

For h = 255 to 0  step A 
une variable dans le Step

mais c'est pas grave ....
car purebasic permet de changer la valeur du compteur de boucle a la volé

donc au lieu de faire

Code : Tout sélectionner

For h = 255 to 0  step A 
tu peux faire

Code : Tout sélectionner

calldebugger
For h = 255 to 0 step -1 ; on laisse le step bidon
	h=h-10 ; voila le vrai Step !!! 
	debug h
Next h

; Epb


ça marche dans les 2 sens

Code : Tout sélectionner

calldebugger
For h = 0 to 255
	debug h
	h=h+10 ; voila le vrai Step !!! 
Next h

; Epb


Re: fade out ChangeGamma()

Publié : mer. 12/mars/2014 14:40
par falsam
la boucle for ... next ne fonctionne pas effectivement avec des variables decimales.

Pour ton fade out essaye ajoute step -1

Code : Tout sélectionner

For i=255 To 0 Step - 1
  Debug i
Next