VectorDrawing rotation d'objets

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

VectorDrawing rotation d'objets

Message 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
Dernière modification par kernadec le lun. 02/mai/2016 8:51, modifié 1 fois.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: VectorDrawing rotation d'objets

Message par Micoute »

Ce n'est pas si mal. Merci Kernadec pour ce partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: VectorDrawing rotation d'objets

Message par kernadec »

bjr Micoute

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

bonne journée à vous

Cordialement
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: VectorDrawing rotation d'objets

Message par blendman »

Quel est le soucis dans ton code, tu voudrais une rotation plus lente ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: VectorDrawing rotation d'objets

Message par falsam »

kernadec a écrit :je suis déçu
Bonjour Kernadec. Pourquoi es tu déçu ?
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
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: VectorDrawing rotation d'objets

Message 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
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: VectorDrawing rotation d'objets

Message par blendman »

Ah ok ^^

Je crois que pour le moment, la lib vectorDrawing n'est pas encore complètement optimisée.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: VectorDrawing rotation d'objets

Message 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
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: VectorDrawing rotation d'objets

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: VectorDrawing rotation d'objets

Message par nico »

Un delay de 1 avec un step de 5, c'est très rapide, je trouve.
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: VectorDrawing rotation d'objets

Message 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






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: VectorDrawing rotation d'objets

Message par Micoute »

Evidemment avec un ordinateur cardiaque, c'est normal qu'il s'essouffle !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre