FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Double buffer pour picture - Page 2 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Double buffer pour picture - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Double buffer pour picture - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Double buffer pour picture - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Double buffer pour picture - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Double buffer pour picture - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Double buffer pour picture - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Double buffer pour picture - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Double buffer pour picture - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Double buffer pour picture - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Double buffer pour picture - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Double buffer pour picture - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Double buffer pour picture - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Double buffer pour picture - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Double buffer pour picture - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 Double buffer pour picture

Aller en bas 
5 participants
Aller à la page : Précédent  1, 2
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptyJeu 11 Juin 2015 - 23:22

Les codes de Cosmos 70 et de Papydall marche très bien (quoi que dans le code de Papydall, moi, le programme sort directement de la boucle que je lance par F9 ou autre, donc pour que ça marche, j'ai modifié en
Code:
dim x0,y0
full_space 0 : 2d_fill_color 255,0,0
caption 0,"Déplacer la souris .... <CLICK> pour terminer"
picture 10 : full_space 10 : color 10,0,0,0 : 2d_pen_color 255,255, 0
repeat
  x0 = mouse_x_position(10) : y0 = mouse_y_position(10)
  2d_circle x0, y0, mod(x0,15)- mod(y0,15)
  if key_down_code  = 27 then terminate
until 1 = 0

Le code de Cosmos fonctionne bien mais j'ai modifié selon mon inspiration du moment comme ça:
Code:
' je promene ma souris
 '  escape pour sortir
 dim c,d, e, f, r
 width 0 ,1600 : height 0,900
 picture 2 : width 2 ,1580 : height 2,860 :  2d_target_is 2 : hide 2
 picture 3 : width 3 ,1580 : height 3,860 : ' clone de 2 pour la souris

 image 4

 repeat
  if key_down_code  = 27 then terminate
  c=  mouse_x_position(3) : d=    mouse_y_position(3)  :' la souris est testé sur le clone
  if e <> c and f<> d
    2d_fill_color  c / 12 + rnd(110), d / 10 + rnd(135),rnd (255)
    r = 5 : e = c : f = d
    2d_circle c,d,r : display
    copy_image() : ' pour afficher sur la fenête 0
  else
    if r < 30 and ( e<> 0 or f<>0)  then r = r+0.25
    2d_circle c,d,r : display
    copy_image() : ' pour afficher sur la fenête 0
  end_if

 until 1=0
 end
 
 ===============================
 sub copy_image()
    2d_image_copy 4,left(2),top(2),width(2),height(2)
    2d_target_is 0: 2d_image_paste 4,left(2),top(2) : ' on recopie sur la fenêtre
    2d_target_is 2
 end_sub

Mais de toute façon la technique du double buffer n'est pas utile ici comme on le voit avec le code de Papydall. Ca ne clignote déjà pas alors qu'il ne l'utilise pas.
Revenir en haut Aller en bas
Invité
Invité




Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptyJeu 11 Juin 2015 - 23:27

Je m'excuse Papydall, mais le code que je propose est celui relevé dans le lien plus haut.
On parle de clignotement, et savoir quand il existe, comment l'éviter.

J'ai repris le code rectifié plus haut, et regardes la différence, en modifiant la variable: choix
avec 2, le clignotement est insupportable, et avec 3, c'est correct.

Code:
' je promene ma souris
 '  escape pour sortir
 dim a,s ,c(100),x ,v  ,d(100) , choix
 choix = 2 :' sans clone  ou 3 avec clone
 width 0 ,1750 : height 0,1200
 picture 2 : width 2 ,1650 : height 2,1100 :  2d_target_is 2
 if choix = 3
    HIDE 2
    picture 3 : width 3 ,1650 : height 3,1100 : ' clone de 2 pour la souris
 end_if
 
 if choix = 3 then image 4
 v=1
 for x= 1 to 5
     repeat
         pause 10
         if key_down_code  = 27 then terminate
         if mouse_right_down(choix)=0
             display
             c(v)=  mouse_x_position(choix) : d(v)=    mouse_y_position(choix)  :' la souris est testé sur le clone
             2d_fill_color  rnd(255), rnd(255),rnd (255)
             2d_circle c(v),d(v),10
             if choix = 3 then copy_image() : ' pour afficher sur la fenête 0
         end_if
     until v=5
     v=v+1
 next x

 end
 ===============================
 sub copy_image()
    2d_image_copy 4,left(2),top(2),width(2),height(2)
    2d_target_is 0: 2d_image_paste 4,left(2),top(2) : ' on recopie sur la fenêtre
    2d_target_is 2
 end_sub

Je peux te dire que lorsqu'on fait du texte sur un picture, on apprécie la différence.

On s'est croisé Jicehel. Je quitte car je ne sais pas pourquoi mon ordi tourne à plein tub!. bizarre
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptyVen 12 Juin 2015 - 0:03

Déplacer la souris sans cliquer : le click arrête le tracé.
Modifier la vitesse du déplacement de la souris (tantôt mouvement lent, tantôt rapide).
Et appréciez votre chef d’œuvre !

Code:

dim x0,y0
full_space 0 : 2d_fill_color 255,0,0
caption 0,"Déplacer la souris .... <CLICK> pour terminer"
picture 10 : full_space 10 : color 10,0,0,0 : 2d_pen_color 255,255, 0
repeat
  x0 = mouse_x_position(10) : y0 = mouse_y_position(10)
  2d_circle x0, y0,30 : 2d_rectangle x0,y0,x0+60,y0 + 60
until scancode <> 0
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Invité
Invité




Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptyVen 12 Juin 2015 - 5:20

Désolé, mais j'ai l'impression qu'on s'égare.
Je n'ai fait que de répondre à ceci:
Sergeauze a écrit:
salut
fini le scintillement ?
Bonne nouvelle !
ce code :
https://panoramic.1fr1.net/t1065-ca-clignotte-a-qui-mieux-mieux
J’espérais le voir amélioré
Mais je ne suis pas assez doué pour le faire moi-même
Si ça tente quelqu'un ;je serais curieux de voir ce que ça donne

Là je ne suis pas hors sujet, et c'est pas mon programme. J'ai juste apporté la méthode de Silverman pour éviter le clignotement.
Revenir en haut Aller en bas
sergeauze

sergeauze


Nombre de messages : 391
Age : 72
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptyVen 12 Juin 2015 - 14:31

Salut à tous
Je suis très reconnaissant à silverman pour son code qui va me permettre
de rendre regardables certains de mes vieux codes :une petite révolution pour moi !
et qui suscite tout notre intérêt
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 11:23

Bonjour à tous,

@sergeauze
l'astuce que j'ai posté à un revers, la vitesse du code est très ralenti(c'est proportionnel à la surface d'affichage).

Voici le code que tu as posté ici, et j'y ai ajouté une mesure de la vitesse d'affichage(dans la barre bleu). J'obtiens environ 1700 images/sec.
Code:

dll_on "kernel32"
dim start_time,count_frame,count_time,fps
start_fps_count()


' je promene ma souris
'  escape pour sortir


  picture 2
 dim a,s ,c(100),x ,v  ,d(100)


  width 2 ,1650
  height 2,1100
  width 0 ,1750
  height 0,1200
  v=1
  2d_target_is 0
  for x= 1 to 5
repeat
      display
      if key_down_code  = 27 then terminate
      if mouse_right_down(0)=0
        display
      c(v)=  mouse_x_position(2)




      d(v)=    mouse_y_position(2)


2d_fill_color  rnd(255), rnd(255),rnd (255)
 2d_circle c(v),d(v),5
 end_if
display
get_fps() :' mesure la vitesse d'affichage
 until v=5
  v=v+1


  next x
  
END
sub start_fps_count()
' mesure en milliseconde, le temps écoulé depuis l'allumage du PC
   start_time=dll_call0("GetTickCount")
   count_frame=0
end_sub
sub get_fps()
' mesure en milliseconde, le temps écoulé depuis l'allumage du PC
   count_time=dll_call0("GetTickCount")
   count_frame=count_frame+1
   if (count_time-start_time)>=1000
      fps=count_frame
      count_frame=0
      start_time=count_time
   end_if
   caption 0,"FPS = "+str$(fps)
end_sub



et le code avec l'astuce, là je descend à environ 60 images/sec.
Code:

dll_on "kernel32"
dim start_time,count_frame,count_time,fps
start_fps_count()


' je promene ma souris
'  escape pour sortir


  picture 2

  dim a,s ,c(100),x ,v  ,d(100)


'  width 2 ,1650
'  height 2,1100
'  width 0 ,1750
'  height 0,1200
  v=1

  2d_target_is 2
  INIT_DOUBLE_BUFFER(2)

   for x= 1 to 5
      repeat
'         display
         if key_down_code  = 27 then terminate
         if mouse_right_down(0)=0
'            display
            c(v)=  mouse_x_position(0)
            d(v)=  mouse_y_position(0)
            2d_fill_color  rnd(255), rnd(255),rnd (255)
            2d_circle c(v),d(v),5
         end_if
'         display
        DOUBLE_BUFFER(2 , 0)
        get_fps() :' mesure la vitesse d'affichage
      until v=5
     v=v+1
   next x


END
'
' Les routines
'
sub DOUBLE_BUFFER(picture_source , form_cible)
  2d_image_copy picture_source+5000,0,0,width(picture_source),height(picture_source)
  2d_target_is form_cible
  2d_image_paste picture_source+5000,left(picture_source),top(picture_source)
  '
  2d_target_is picture_source
end_sub


sub INIT_DOUBLE_BUFFER(picture_source)
   hide picture_source
   image picture_source+5000
end_sub





sub start_fps_count()
' mesure en milliseconde, le temps écoulé depuis l'allumage du PC
   start_time=dll_call0("GetTickCount")
   count_frame=0
end_sub
sub get_fps()
' mesure en milliseconde, le temps écoulé depuis l'allumage du PC
   count_time=dll_call0("GetTickCount")
   count_frame=count_frame+1
   if (count_time-start_time)>=1000
      fps=count_frame   :' nb d'images par seconde
      count_frame=0
      start_time=count_time
   end_if
   caption 0,"FPS = "+str$(fps)
end_sub


@cosmos70
Citation :
Mais j'aimerai que quelqu'un m'explique pourquoi alors que picture 3 est sur la form 0, on voit la copie du picture 2 sur la forme 0
C'est parceque "2d_image_copy" ne copie pas ce qui est affiché, mais ce qui est stocké dans une zone mémoire. Un picture est une zone mémoire(de la même manière que "image") attribué par Panoramic, donc on peu en copier un invisible et le coller(2d_image_paste) à l'écran(dans la mémoire tampon d'affichage pour être exact).
Ce que l'on voit à l'écran c'est un résultat final, le mixage de toutes ces zones mémoires dirigé vers l'écran; le contenu de la mémoire tampon d'affichage en fait.
Dans ton code, la zone mémoire 3 est active pour détecter la souris mais contient le contenu de la zone mémoire 2.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 11:51

C'est le même principe que la détection d'un clic sur une image qui récupère la position du clic sur l'image mais qui teste si on a cliqué sur un objet actif sur une autre image.
Revenir en haut Aller en bas
sergeauze

sergeauze


Nombre de messages : 391
Age : 72
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 11:56

salut
@siverman
Les resultats obtenus chez moi sont assez differents
premier code petite surface
entre 1032 et1051 fps
deuxieme code  tout l'ecran
entre 1563 et 1577
Je suis sous vista édition familiale
processeur  coree double coeur
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 12:09

@Jicehel
scratch

@sergeauze
je suis sous XP, c'est surement pour cela que c'est plus long sur mon pc.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 12:53

A toi tu n'as pas suivi la discution pour les collisions par masques Wink
C'est un sujet en cours par rapport à mon articles sur les collisions (le n°2) qui était prévu et le développement des fonctions pour les sprites de Klaus. Comme toi qui fait travailler sur un picture caché que tu recopies à l'affichage, le principe du masque est d'afficher une "belle" image colorée comme on veut avec des objets qui peuvent avoir des formes complexes (genre une courgette, une lampe de chevé, une carafe, un pistolet, une porte vue en perspéctive de côté, etc) dont la détection du clic pourrait être assez fastidieuse par programmation. La technique du masque est de faire une version spéciale de cette image ou tout le fond est supprimé ou dans la technique de Klaus, une des composantes au moins est passé à 0 (Klaus à arbitrairement choisit le bleu) et de mettre les objets dans une couleur ou cette composante aura une valeur donnée (Klaus a pris des multiples de 4 de la composante bleue). Si on avait besoin de 255 objet, avec la même techinque, il suffirait juste de lire la composante bleue du pixel du masque (qui n'est pas visible) correspondant à l'endroit ou l'utilisateur à cliqué sur l'image associée que l'on affiche.

C'est une méthode très utilisée dans les jeux type point and clic.

Note: Le graphiste peut adapter la précision du clic de l'utilisateur en faisant déborder la zone sensible s'il le souhaite.
Revenir en haut Aller en bas
Invité
Invité




Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 EmptySam 13 Juin 2015 - 13:16

Merci Silverman.

D'accord pour 2d_image_copy ou paste. Là où je ne comprend pas, est que picture 3 est dessus, et invisible. Peut importe, ça fonctionne.

Pour ce qui est de la vitesse, il n'est pas forcément souhaitable de 'double_bluffer Very Happy ' à chaque modification. Pour ma part je le fais lorsque la page est prête, cela présente l'avantage d'afficher d'un coup, au lieu de voir le défilement d'écriture. Cela dépend du programme évidemment.
Revenir en haut Aller en bas
Contenu sponsorisé





Double buffer pour picture - Page 2 Empty
MessageSujet: Re: Double buffer pour picture   Double buffer pour picture - Page 2 Empty

Revenir en haut Aller en bas
 
Double buffer pour picture
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Nouvelle commande pour PICTURE
» Taille des polices pour Print dans un Picture
» presque le double clic
» Label en double
» EURÉKA! Le double clic!!!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: