fade out ChangeGamma()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

fade out ChangeGamma()

Message 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
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: fade out ChangeGamma()

Message 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...
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Résolu: fade out ChangeGamma()

Message par jmg49 »

Merci de ta réactivité

je vais regarder le code :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Résolu: fade out ChangeGamma()

Message par falsam »

C'était une question relative à un code 2D ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: fade out ChangeGamma()

Message 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 ...
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: fade out ChangeGamma()

Message par majikeyric »

sinon tu fais

Code : Tout sélectionner

DisplayTransparentSprite(#Sprite, x, y Intensite)
en faisant varier l'intensité de de 255 à 0.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: fade out ChangeGamma()

Message 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 :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: fade out ChangeGamma()

Message par Fig »

JMG49>J'avais compris que tu voulais que ce soit la fenêtre qui disparaisse... :?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: fade out ChangeGamma()

Message 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.
jmg49
Messages : 153
Inscription : mer. 26/févr./2014 8:53

Re: fade out ChangeGamma()

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: fade out ChangeGamma()

Message 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

Dernière modification par Backup le mer. 12/mars/2014 14:44, modifié 2 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: fade out ChangeGamma()

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre