[RESOLU] #PB_Event_Repaint ???

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

[RESOLU] #PB_Event_Repaint ???

Message par Fortix »

Bonsoirs :D

Je viens de parcourrir quelques petites choses dans la partie "aide" de PB 5.11,
puis dans la rubrique 2DDrawing on lit un moment donné la constante "#PB_Event_Repaint"
sans exemple d'utilisation :lol:

pourrais je avoir vos lumières :D svp
Dernière modification par Fortix le jeu. 02/mai/2013 21:27, modifié 2 fois.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: #PB_Event_Repaint ???

Message par kernadec »

bonjour Fortix
Fred lui même répond à ta question. :)
http://www.purebasic.fr/english/viewtop ... 13&t=53086

Cordialement
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: #PB_Event_Repaint ???

Message par SPH »

Je n'ai pas reussi a traduire :?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: #PB_Event_Repaint ???

Message par kernadec »

bonjour SPH
t'est sérieux.. 8O .
tu lance google translate
tu copie l' URL dedans... il va te traduire ce post... :D

Sinon le code de ts-soft est un bon exemple :?

Cordialement
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

A ok :lol:

je m'étais lancé dans des complexités inutilement :lol:

merci à vous :D
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: #PB_Event_Repaint ???

Message par SPH »

Fortix a écrit :constante "#PB_Event_Repaint"
C'est pour peindre ? :?:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

Oui je dois peindre constamment repeindre le window
puisque je faire une sorte de loadeur façon "ajax"
que j'ai peine à faire d'ailleur :lol:

Code : Tout sélectionner

CreateImage(0, 100,100)
StartDrawing(ImageOutput(0))
	Box(0, 0, 100, 100, RGB(255, 255, 255))
StopDrawing()

If OpenWindow(0, 0, 0, 200, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	ButtonGadget(0,120,40,20,20,"ici")
	ImageGadget(0,0,0,100,100,ImageID(0))
Repeat
      	Event = WaitWindowEvent()
		WindowID = EventWindow()
		GadgetID = EventGadget()
		EventType = EventType()
      	
      	StartDrawing(ImageOutput(0))
      	;Box(0, 0, 200, 200, RGB(255, 255, 255))
      	
      	For Angle = 0 To 360 Step 45
        	DrawRotatedText(0, 0,"       ^", Angle, RGB(0, 255, 0))
        	Delay(125)
      	Next Angle
      	
      	For Angle2 = 0 To 360 Step 45
        	DrawRotatedText(0, 0,"       ^", Angle2, RGB(255, 255, 255))
        	Delay(125)
      	Next Angle2
      	StopDrawing()
      	
      	Select GadgetID
      		Case 0
      			MessageRequester("tst","tst")
      	EndSelect	
      	
      	Select Event
      		Case #PB_Event_Repaint
Case #PB_Event_CloseWindow
      		
      			close.b=#True
      	
      	EndSelect
    Until close
    
;     StopDrawing()
EndIf

End
pas jolie jolie :lol:
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: #PB_Event_Repaint ???

Message par Fred »

Utilise un timer:

Code : Tout sélectionner

CreateImage(0, 100,100)
StartDrawing(ImageOutput(0))
Box(0, 0, 100, 100, RGB(255, 255, 255))
StopDrawing()

If OpenWindow(0, 0, 0, 400, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(0,120,40,20,20,"ici")
  ImageGadget(1,0,0,100,100,ImageID(0))
  
  AddWindowTimer(0, 0, 100)
  Repeat
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()
    
    
    
    Select Event
      Case #PB_Event_Timer
        
        If StartDrawing(ImageOutput(0))
          Box(0, 0, 200, 200, RGB(128, 128, 128))
          
          Angle + 10
           
          DrawRotatedText(50, 50, "   ^", Angle, RGB(255, 255, 255))
          
          StopDrawing()
          SetGadgetState(1, ImageID(0))
        EndIf
        
      Case #PB_Event_Gadget
        Select GadgetID
          Case 0
            MessageRequester("tst","tst")
        EndSelect   
    
      Case #PB_Event_CloseWindow
        close = #True
        
        
        
    EndSelect
  Until close
  
EndIf

End
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

merci, c'est top @Fred :lol:
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

voici cette version plus abouti sur l'idée de base :D

Code : Tout sélectionner

CreateImage(0, 100,100)
StartDrawing(ImageOutput(0))
Box(0, 0, 100, 100, RGB(255, 255, 255))
StopDrawing()

If OpenWindow(0, 0, 0, 400, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(0,120,40,20,20,"ici")
  TextGadget(2,200,40,70,20,"----")
  ImageGadget(1,0,0,100,100,ImageID(0))
 
  AddWindowTimer(0, 0, 100)
  Repeat
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()
   
   
   
    Select Event
      Case #PB_Event_Timer
       
        If StartDrawing(ImageOutput(0))
          Box(0, 0, 100, 100, RGB(255, 255, 255))
         
;          	For Angle0 = 0 To 360 Step 45
; 				DrawRotatedText(50, 50,"       ^", Angle0, RGB(0, 128, 0))
; 			Next Angle0	
         
          Angle + 45
          
          DrawRotatedText(50, 50, "       ^", Angle, RGBA(255,128,0,255))
          DrawRotatedText(50, 50, "       ^", Angle-90, RGBA(255,128,0,192))
          DrawRotatedText(50, 50, "       ^", Angle-135, RGBA(255,128,0,128))
          DrawRotatedText(50, 50, "       ^", Angle-180, RGBA(255,128,0,64))
          DrawRotatedText(50, 50, "       ^", Angle-225, RGBA(255,128,0,32))
          DrawRotatedText(50, 50, "       ^", Angle-270, RGBA(255,128,0,16))
          DrawRotatedText(50, 50, "       ^", Angle-315, RGBA(255,128,0,8))
          DrawRotatedText(50, 50, "       ^", Angle-360, RGBA(255,128,0,4))
          	
          StopDrawing()
          SetGadgetState(1, ImageID(0))
        EndIf
       
      Case #PB_Event_Gadget
        Select GadgetID
          Case 0
          	SetGadgetText(2,"Action!")
        EndSelect   
   
      Case #PB_Event_CloseWindow
        close = #True
       
    EndSelect
  Until close
EndIf
End
c'est sûr qui si on avait la possibilité de mettre un GIF ou un APNG sur une ImageGadget directement
on aurait pas à taper ce code :lol:

encore merci @Fred pour l'idée du Timer :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: #PB_Event_Repaint ???

Message par Backup »

comme ça aussi c'est cool ;)

Code : Tout sélectionner

CreateImage(0, 100,100)
StartDrawing(ImageOutput(0))
	Box(0, 0, 100, 100, RGB(255, 255, 255))
StopDrawing()

If OpenWindow(0, 0, 0, 400, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	ButtonGadget(0,120,40,20,20,"ici")
	TextGadget(2,200,40,70,20,"----")
	ImageGadget(1,0,0,100,100,ImageID(0))
	
	AddWindowTimer(0, 0, 50)
	Repeat
		Event = WaitWindowEvent()
		WindowID = EventWindow()
		GadgetID = EventGadget()
		EventType = EventType()
		
		
		
		Select Event
			Case #PB_Event_Timer
			
			If StartDrawing(ImageOutput(0))
				Box(0, 0, 100, 100, RGB(255, 255, 255))
				
				; ************* variante possible *************************************
				; For Angle0 = angle To 360+angle Step 45
				; linexy(50,50,50+sin(angle*(3.14159/180))*100,50+cos(angle*(3.14159/180))*100,0)
				; Next Angle0   
				; ********************************************************************
				
				For Angle0 = angle To 360+angle Step 45
					linexy(50-sin(angle*(3.14159/180))*100,50-cos(angle*(3.14159/180))*100,50+sin(angle*(3.14159/180))*100,50+cos(angle*(3.14159/180))*100,0)
				Next Angle0   
				
				Angle + 30
				
			StopDrawing()
			SetGadgetState(1, ImageID(0))
		EndIf
		
		Case #PB_Event_Gadget
		Select GadgetID
			Case 0
			SetGadgetText(2,"Action!")
		EndSelect   
		
		Case #PB_Event_CloseWindow
		close = #True
		
	EndSelect
Until close
EndIf
End

; EPB
[reedit]
code modifié pour faire une ligne ;)
Dernière modification par Backup le mer. 01/mai/2013 17:21, modifié 4 fois.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

quasi à l'identique :lol:

si tu veux innover @Dobro, essais de faire pivoter une ligne (lineXY()) à la place d'un texte :D
je vais essayer de mon côté :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: #PB_Event_Repaint ???

Message par Backup »

voila c'est fait (revoir mon code )
temps de reflexion 2 secondes (tain jchui en forme :) )
une autre variante consiste a remplacer la boucle par :

Code : Tout sélectionner

For Angle0 = angle To 360+angle Step 45
    linexy(50-sin(angle*(3.14159/180))*100,50-cos(angle*(3.14159/180))*100,50+sin(angle*(3.14159/180))*100,50+cos(angle*(3.14159/180))*100,0)
Next Angle0   
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: #PB_Event_Repaint ???

Message par Fortix »

c'est cool :D
bien joué
Répondre