Page 1 sur 1

VectorDrawing rotation d'objets

Publié : dim. 01/mai/2016 18:01
par kernadec
bsr à tous
eh ben c'est pas violent la rotation je suis déçu 8O

Cordialement

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 150, 0, 250, 200)
  CanvasGadget(1, 0, 0, 150, 200)
  For i=0 To 8000   step 5                             ; boucle test
    If StartVectorDrawing(CanvasVectorOutput(0))
     VectorSourceColor(RGBA(255, 255, 255, 255))   ; retabli fond blanc
      FillVectorOutput()
      
      RotateCoordinates(150, 100, i)
      AddPathEllipse(150, 100, 80, 30)
      
      VectorSourceColor(RGBA(0, 255, 0, 255))
      StrokePath(10)
      
      StopVectorDrawing()
    EndIf
    
    If StartVectorDrawing(CanvasVectorOutput(1))
     VectorSourceColor(RGBA(255, 255, 255, 255))   ; retabli fond blanc
      FillVectorOutput()
      
      RotateCoordinates(75, 75, i)
      MovePathCursor(100, 100)
      
      For u = 1 To 4                               ; construction d'un carré
        AddPathLine(100,  50, #PB_Path_Default)
        AddPathLine( 50,  50, #PB_Path_Default)
        AddPathLine( 50, 100, #PB_Path_Default)
        AddPathLine(100, 100, #PB_Path_Default)
      Next u
      
      VectorSourceColor(RGBA(255, 0, 0, 255))
      StrokePath(10)
      
      StopVectorDrawing()
    EndIf
  Next i
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 6:47
par Micoute
Ce n'est pas si mal. Merci Kernadec pour ce partage.

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 8:50
par kernadec
bjr Micoute

merci, :wink: bien sur on peut toujours mettre un step x à la boucle :mrgreen:

bonne journée à vous

Cordialement

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 10:04
par blendman
Quel est le soucis dans ton code, tu voudrais une rotation plus lente ?

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 10:23
par falsam
kernadec a écrit :je suis déçu
Bonjour Kernadec. Pourquoi es tu déçu ?

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 11:38
par kernadec
bjr à tous
je suis déçu parce que la vitesse obtenue avec la boucle sans step
sa rotation n'est pas très rapide voilà
je dois dire que mon ordi est un dell D600 avec xp pro
c 'est pas un foudre de guerre il manque surement de coeur :? :mrgreen:

cordialement

Re: VectorDrawing rotation d'objets

Publié : lun. 02/mai/2016 12:28
par blendman
Ah ok ^^

Je crois que pour le moment, la lib vectorDrawing n'est pas encore complètement optimisée.

Re: VectorDrawing rotation d'objets

Publié : mar. 03/mai/2016 11:45
par nico
C'est parce que tu dessines sur une fenêtre, tu ne peux pas aller plus vite que le temps nécessaire au rafraîchissement de la fenêtre, de plus ton code n'est pas dans la boucle; bon là j'ai préféré mettre un thread,comme ça c'est déjà beaucoup mieux. J'ai mis un delay de 10 mais tu peux descendre à moins:

Code : Tout sélectionner

Procedure dessin(lparam)
  For i=0 To 8000   Step 5                             ; boucle test
    Delay(10)
    If StartVectorDrawing(CanvasVectorOutput(0))
     VectorSourceColor(RGBA(255, 255, 255, 255))   ; retabli fond blanc
      FillVectorOutput()
      
      RotateCoordinates(150, 100, i)
      AddPathEllipse(150, 100, 80, 30)
      
      VectorSourceColor(RGBA(0, 255, 0, 255))
      StrokePath(10)
      
      StopVectorDrawing()
    EndIf
    
    If StartVectorDrawing(CanvasVectorOutput(1))
     VectorSourceColor(RGBA(255, 255, 255, 255))   ; retabli fond blanc
      FillVectorOutput()
      
      RotateCoordinates(75, 75, i)
      MovePathCursor(100, 100)
      
      For u = 1 To 4                               ; construction d'un carré
        AddPathLine(100,  50, #PB_Path_Default)
        AddPathLine( 50,  50, #PB_Path_Default)
        AddPathLine( 50, 100, #PB_Path_Default)
        AddPathLine(100, 100, #PB_Path_Default)
      Next u
      
      VectorSourceColor(RGBA(255, 0, 0, 255))
      StrokePath(10)
      
      StopVectorDrawing()
    EndIf
  Next i
EndProcedure


If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 150, 0, 250, 200)
  CanvasGadget(1, 0, 0, 150, 200)
  
  CreateThread(@dessin(), 0)
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf

Re: VectorDrawing rotation d'objets

Publié : mar. 03/mai/2016 13:16
par kernadec
bjr nico
merci d'avoir regardé le code.
ce n'est pas dessiné dans la fenêtre, mais sur deux deux canvas!
ensuite la boucle du programme est avec un STEP égal à 5 ce qui la rend plus rapide.

essaye avec ton code de commenter le step et ton delay(10)
tu verras que ce n'est pas vraiment rapide

Et on ne perçois pas vraiment de différence de vitesse
avec ou sans le CreateThread(@dessin(), 0)

merci encore nico

Cordialement

Re: VectorDrawing rotation d'objets

Publié : mar. 03/mai/2016 18:52
par nico
Un delay de 1 avec un step de 5, c'est très rapide, je trouve.

Re: VectorDrawing rotation d'objets

Publié : mar. 03/mai/2016 21:27
par venom
nico a écrit :Un delay de 1 avec un step de 5, c'est très rapide, je trouve.
Chez moi aussi c'est très speed :D






@++

Re: VectorDrawing rotation d'objets

Publié : mer. 04/mai/2016 6:36
par Micoute
Evidemment avec un ordinateur cardiaque, c'est normal qu'il s'essouffle !