Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Double buffer pour picture | |
| | |
Auteur | Message |
---|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Double buffer pour picture Jeu 14 Mai 2015 - 14:47 | |
| EDIT: 1) dans le premier code (le feu de bois) il faut presser la barre d'espace pour stabiliser l'image. 2) pour l'autre code (cadran) il faut utiliser les touches + et - du pavé numérique. Bonjour à tous, voici une démo pour faire du double buffering, c'est à dire obtenir un affichage sans clignotement. - Code:
-
' rem ' Feu-Bois rem ' code original : jjn4 rem ' ici: http://panoramic.1fr1.net/t629-feu-de-cheminee-impressionniste?highlight=cheminee
' modifié par Silverman pour: ' ' test de double buffering ' ' mai 2015
dim g , i , j , m , k label fin , dessine
dim tch,oldtch,flip_flop
width 0,800 : height 0,552 ' caption 0,"Feu de cheminée impressionniste (clavier ou clic droit pour arrêter)" caption 0,"Feu de cheminée impressionniste (cliquez sur le feu pour arrêter) ---> mode: STANDARD"
' un décor picture 1 : left 1,1 : top 1,1 : width 1,785 : height 1,510 color 1,236,233,216 2d_target_is 1
2d_pen_color 100,0,0 for i=1 to 50 2d_line 1,i,800,i next i
2d_pen_color 150,135,120 for j=1 to 6 for i=1 to 75 2d_line 5+int(rnd(3)),i+77*j-25,98+int(rnd(3)),i+77*j-25 2d_line 685+int(rnd(3)),i+77*j-25,782+int(rnd(3)),i+77*j-25 next i next j
' le picture dans lequel on va animer le dessin picture 2 : left 2,101 : top 2,52 : width 2,585 : height 2,459 on_click 2,fin
' le double_buffer n'est pas directement cliquable, alors on le clone dans ' un picture à qui on affecte l'évènement clic CLONE_PICTURE(3,2) on_click 3,fin
' on associe le double_buffer avec le picture qui va être dessiné, ici le picture n°2 INIT_DOUBLE_BUFFER(2)
' dirige les opérations de dessin dans le picture qui va être dessiné 2d_target_is 2
' la boucle d'affichage hide 3 : show 2 : flip_flop=1 : ' affichage standard par défaut repeat
' test la barre d'espace oldtch=tch tch=scancode if tch=32 tch=1 else tch=0 end_if if tch>oldtch flip_flop=1-flip_flop end_if ' gosub dessine ' choix du type d'affichage IF flip_flop=1 ' AFFICHAGE STANDARD if tch=1 :' on répète les commandes suivantes tant que la barre d'espace est appuyé hide 3 :' désactive la zone cliquable du double_buffer show 2 :' montre le picture dessiné caption 0,"Feu de cheminée impressionniste (cliquez sur le feu pour arrêter) ---> mode: STANDARD" end_if ' display :' affiche le dessin ELSE ' AFFICHAGE AMELIORE if tch=1 :' on répète les commandes suivantes tant que la barre d'espace est appuyé show 3 :' active la zone cliquable du double_buffer hide 2 :' cache le picture dessiné caption 0,"Feu de cheminée impressionniste (cliquez sur le feu pour arrêter) ---> mode: DOUBLE_BUFFER" end_if ' DOUBLE_BUFFER(2,0) :' affiche le dessin END_IF
until scancode>32 goto fin
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 CLONE_PICTURE(nouveau_picture,picture_source) picture nouveau_picture top nouveau_picture,top(picture_source) left nouveau_picture,left(picture_source) width nouveau_picture,width(picture_source) height nouveau_picture,height(picture_source)
end_sub
sub DELETE_DOUBLE_BUFFER(picture_source , form_cible) 2d_target_is form_cible delete picture_source delete picture_source+5000 end_sub
dessine: 2d_pen_width 20 color 2,0,0,0 2d_pen_color 205,25,25 for i=1 to 130 2d_line 150,i/3+370,450,i/3+330 2d_line 300+rnd(5),i/2+350,430-rnd(5),i/2+370 next i for i=1 to 30 2d_line 370+i*2,380+i,470,385 2d_line 230+i*2,400+i,330,390 next i for j=1 to 7 m=int(rnd(220)) : k=int(rnd(99)) for i=1 to 280 step 19 2d_pen_color 255,255-int(i/2),0 2d_line 190+m-int(i/5)+int(rnd(3)),i+90,190+m+int(i/5)+int(rnd(3)),i+k+30 next i next j 2d_pen_color 0,0,0 2d_rectangle 200,300,201,440 : 2d_rectangle 400,300,401,450 2d_circle 200,300,10 : 2d_circle 400,300,10 return
fin: DELETE_DOUBLE_BUFFER(2,0) terminate
et un test avec un autre code(j'y ai ajouté 3 lignes et en ai remarké 2 pour faire fonctionner le double_buffer) que quelques uns vont surement reconnaitre - Code:
-
' code original : ygeronimi ' ici : http://panoramic.1fr1.net/t4161-souci-avec-2d_image_paste
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 width 0,600+16
Picture 1 full_space 1 color 1,0,200,0 display On_Key_down 0,Clic
image 2 Cadran(1,150,200)
init_double_buffer(1) :' initialise le double_buffer <======== double_buffer(1,0) :' affiche le cadran <======== ' set_focus 0 :' <=====
end
Clic: sc%=scancode if sc%=107 : Angl=Angl+0.01 :Move() : end_if if sc%=109 : Angl=Angl-0.01 :Move() : end_if if sc%=27 : terminate :end_if double_buffer(1,0) :' affichage <======== return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=120 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 Cy=height(Obj%)/2 A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% Ang=A*i% Ax(i%)=Cx+(Ray%*cos(Ang)) Ay(i%)=Cy+(Ray%*sin(Ang)) display next i% ' marques exterieures for i%=1 to nbs% Ang=A*i% Bx(i%)=Cx+(Ray2%*cos(Ang)) By(i%)=Cy+(Ray2%*sin(Ang)) next i% ' tracage du cadran 2D_Target_is 1 2D_pen_color 200,200,200 2D_pen_width 2 for i%=1 to nbs% 2D_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% ' memorisation du cadran 2d_image_copy 2,0,0,width(1),height(1) : ' 200,200 END_SUB
SUB Move() dim_local Cx,Cy,Mx,My,Nx,Ny,Ray Ray=150 Cx=width(1)/2 Cy=height(1)/2 Mx=Cx+Ray My=Cy Nx=Cx+(Ray*cos(Angl*-1)) Ny=Cy+(Ray*sin(Angl*-1)) 2d_target_is 1 2d_image_paste 2,0,0 2d_pen_color 255,0,0 2d_pen_width 1 2d_line Cx,Cy,Mx,My 2D_LINE Cx,Cy,Nx,Ny ' set_focus 0 :' <===== END_SUB 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 CLONE_PICTURE(nouveau_picture,picture_source) picture nouveau_picture top nouveau_picture,top(picture_source) left nouveau_picture,left(picture_source) width nouveau_picture,width(picture_source) height nouveau_picture,height(picture_source)
end_sub
sub DELETE_DOUBLE_BUFFER(picture_source , form_cible) 2d_target_is form_cible delete picture_source delete picture_source+5000 end_sub
Dernière édition par silverman le Jeu 14 Mai 2015 - 19:53, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Jeu 14 Mai 2015 - 15:20 | |
| Pas mal du tout, ça améliore nettement le rendu visuel | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Double buffer pour picture Jeu 14 Mai 2015 - 16:57 | |
| Bonne astuce, merci pour le partage! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Double buffer pour picture Jeu 14 Mai 2015 - 19:20 | |
| Très bonne astuce et bon résultat.
Pour ceux qui ne trouvent pas comment ça fonctionne: 1) dans le premier code (le feu de bois) il faut presser la barre d'espace pour stabiliser l'image. 2) pour l'autre code (cadran) il faut utiliser les touches + et - du pavé numérique.
A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Double buffer pour picture Jeu 14 Mai 2015 - 19:55 | |
| Merci Jean Claude, en effet c'est un oubli corrigé! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Double buffer pour picture Jeu 14 Mai 2015 - 20:15 | |
| Rien de grave , mais ça peut éviter de se décourager ou d'éplucher le code pour trouver la solution. Il n'en reste pas moins que c'est super ! A+ | |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Lun 8 Juin 2015 - 23:35 | |
| Bonsoir, Je viens d'adapter le système de Silverman pour un programme qui a déjà plus de 2000 lignes, et ça ne fait que commencer, et je dois dire que je suis bleffé par le résultat. Aucun scintillement. J'aime pas trop intervenir, mais quant je constate une telle amélioration, je me dois de féliciter l'auteur de cette astuce. Je pense pouvoir dire que celle-ci est incontournable avec Panoramic, car c'est vraiment la solution. Merci Silverman. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 7:16 | |
| Je suis d'accord avec toi Cosmos70. C'est vrament pratique et simple pour un résultat vraiment plus agréable visuellement | |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 7:40 | |
| Seulement c'est incompréhensible. Cela semble a un bug de Panoramic.
On écrit sur un picture caché. On met le target sur la form pour copier le picture. OK, mais on a aussi le picture suplémentaire qui lui est dessus, mais on ne le voit pas, celui-ci servant à lire la position de la souris. C'est comme si ce dernier était dessus et invisible. Là je suis étonné.
Si c'est un bug, il faut qu'il reste, ou que Jack trouve la solution, car je pense qu'il ne connait pas la réponse pour le scintillement lié aux pictures. Il n'a à ma connaissance jamais répondu a une question parlant de ce problème. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 7:58 | |
| C'est juste que tu restes sur le même form et que tu bouges juste la partie que tu en vois (les pictures sont l'une au dessus de l'autre) | |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 8:17 | |
| Moi je reste bloqué sur cette explication.
Le picture suplémentaire est 'full_space', et prend toute la place. Il est donc sur la fenêtre, et il n'est pas à 'HIDE' sinon pour la souris ça ne marche pas. Pourtant c'est la fenêtre 0 qu'on voit. Est-ce que 2D_TARGET_IS 0 met celle-ci devant le picture? |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 10:16 | |
| oui mais il modifie le TOP du picture pour le placer en dehors de la zone visible. | |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Mar 9 Juin 2015 - 14:22 | |
| - Jicehel a écrit:
- oui mais il modifie le TOP du picture pour le placer en dehors de la zone visible.
Et bien non! Voici un programme de teste pour être inséré dans le principal. Tu peux voir que le picture 2, le normal, et le picture 3, le miroir, sont tous les deux full_space. Si tu regardes à la fin la sub: image_copy(), tu remarqueras qu'il n'y a rien d'autre. Cela semble le «2D_TARGET_IS 0», écrit sur 0. A part l'initialisation du picture 3, nul part il intervient, sauf pour prendre les coordonnés de la souris, et pourtant il n'est pas hide, et il prend mouxeX et mouseY sur 3, autrement ça ne marche pas. - Spoiler:
- Code:
-
' teste d'un liste sur picture avec décalage
dim decalage_lig% ,a$ ,b , buffer , mouse : caption 0,"sortie par <esc>" width 0, 600 : height 0,800 :' plus height est important, plus il y a un scintillementy dim liste_fonte$(200) buffer = 1 if buffer = 1 picture 3 : full_space 3 :' copie miroir image 5 mouse = 3 else mouse = 2 end_if
picture 2 : full_space 2 : 2d_target_is 2 : print_target_is 2 : font_size 2,10 : font_bold 2 : font_name 2,"consolas" dlist 7 : font_names_load 7 : ' pour prendre la liste des fontes repeat :' on enlève toutes les fontes avec @ a$ = item_read$(7,1) if left$(a$,1) = "@" then item_delete 7,1 until left$(a$,1) <> "@" or scancode = 27 item_delete 7,1:' 8514eom for b=1 to count(7) : liste_fonte$(b)=item_read$(7,b) : next b
teste() end ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub teste() repeat : until mouse_y_position(mouse) < 50 dim_local i ,mouseX , mouseY ,lig_clic% , copie_lig% , a% , le , long , nb_line% , nb_print% , g :' , decalage_lig% g = 200 for a% = 1 to 200 : if liste_fonte$(a%) = "" then exit_for next a% : nb_line%= a%
nb_print% = nb_line% -1 if nb_print% * 20 > height(2)-30 then nb_print% = (height(2)-30)/20 -1
for a% = 1 to 200 if liste_fonte$(a%) = "" exit_for else le = 0 for i = 1 to len(liste_fonte$(a%)) le =le + 10 next i if long < le then long = le end_if next a% long = long +30
rem "===============================================================" decalage_lig% = 0 :' zone liste des fontes 2d_fill_color 255,255,255 : 2d_pen_color 0,255,0 : 2d_pen_width 2 2d_rectangle 12+g,23,long + 14+g, nb_print% *20 + 28 2d_pen_color 0,0,0 : 2d_pen_width 1 : 2d_line long-30+g , 23 , long-30+g , nb_print% *20+28 rem "===============================================================" ' ******************** rem "===============================================================" ' bouton pour décalage 2d_fill_color 246,221,150 : 2d_pen_color 0,0,0 :2d_pen_width 1 ' décalage - 2d_rectangle long-8+g, 27 ,long+11+g, 47 : font_name 2,"Wingdings":font_size 2,9 :print_locate long-5+g,29 : print chr$(217) ' décalage + 2d_rectangle long-8+g, 50 ,long+11+g, 70 : print_locate long-5+g,52 : print chr$(218) font_name 2,"Consolas" : font_size 2,10
nom_fonte(nb_print%,decalage_lig%,g) image_copy() repeat mouseX = mouse_x_position(mouse) : mouseY = mouse_Y_position(mouse) if scancode = 19 then terminate ' ................ if mouseX >(10+g) and mouseX < (long-40+g) if mouseY > 24
lig_clic% = (mouseY - 24 - 5) / 20 + 1: ' si la liste dépasse la hauteur du liste if lig_clic% > nb_print% then lig_clic% = nb_print% if copie_lig% > 0
if copie_lig% <> lig_clic% ' on retire avant de partir sur la nouvelle ligne l'inversion des couleur font_color 2,0,0,0 : 2d_fill_color 255,255,255 print_locate 14+g, (copie_lig% )*20 +4: print string$(24," ") print_locate 14+g, (copie_lig% )*20 +4 print liste_fonte$(copie_lig%+decalage_lig%) image_copy() end_if end_if
if lig_clic% <> copie_lig% ' si le curseur a changer de ligne font_color 2,255,255,255 : 2d_fill_color 0,0,255 print_locate 14+g, (lig_clic% )*20 +4: print string$(24," ") print_locate 14+g, (lig_clic% )*20 +4 print liste_fonte$(lig_clic% + decalage_lig%) : copie_lig% = lig_clic% image_copy() end_if end_if else if scancode = 1 and mouseX > long-10+g repeat : until scancode = 0 if mouseY > 50 decalage_lig% = decalage_lig% +nb_print% if decalage_lig% > nb_line% - nb_print% then decalage_lig% = nb_line% - nb_print% - 1 ' on affiche la page précédente nom_fonte(nb_print%,decalage_lig%,g) image_copy() end_if ' ------------- if mouseY < 48 decalage_lig% = decalage_lig% - nb_print% if decalage_lig% < 0 then decalage_lig% = 0 ' on affiche la page suivante nom_fonte(nb_print%,decalage_lig%,g) image_copy() end_if end_if wait 10: repeat:until scancode = 0 end_if
wait 100 : if scancode = 19 then exit_sub
if (scancode = 1 and mouseX < (long-10)) then exit_repeat if mousey > (nb_print% +1)* 20 + 10 then exit_repeat :' pour éviter qu'une sélection soit prise lors d'un clic, mais si on a pas cliqué sur un item if mouseX > 480 then exit_repeat until scancode = 27
if scancode <> 1 then lig_clic% = 0 if lig_clic% > 0 then message "cliqué: "+ liste_fonte$(lig_clic%+decalage_lig%) + chr$(13)+"long="+str$(long)+" mouseX="+str$(mousex) terminate end_sub ============================================================ sub nom_fonte(a%,decalage_lig%,g) image_copy() :' COPY dim_local i 2d_fill_color 255,255,255 : font_color 2,0,0,0 for i=1 to a% print_locate 14 +g, 20 * i +4: print string$(24," ") print_locate 14+g , 20 * i +4 print liste_fonte$(i+decalage_lig%) next i end_sub ============================================================ sub image_copy() if buffer = 1 2d_image_copy 5,left(2),top(2),width(2),height(2) :' rappel: picture 2 est le picture normal, et picture 3 le miroir 2d_target_is 0 : 2d_image_paste 5,0,0 : display :' copie sur la fenêtre hide 2 : 2d_target_is 2 :' pour écrire sur le picture end_if end_sub
|
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Mer 10 Juin 2015 - 15:15 | |
| J'ai fait un petit programme pour bien voir comment cela se comporte. Le but n'est pas de voir si il y a du scintillement ou non, de toute façon, tel que le programme est fait, c'est obligatoire d'en voir. 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 Le picture 3 est bien présent, en bougeant la souris,le positionnement est retransmis à droite. Si on met hide 3, on ne lit pas les coordonnées. C'est curieux que cela fonctionne, et c'est bien tant-mieux! Mais je ne comprend pas la logique. - Code:
-
dim decalage_lig% ,a$ ,b width 0, 600 : height 0,400 : caption 0,"sortir par <ESC>"
picture 3 : full_space 3 :width 3,200:' copie miroir picture 2 : full_space 2 :width 2,200: 2d_target_is 2 : print_target_is 2 : font_size 2,20 : font_bold 2 memo 4 : left 4,250 : height 4,height(2) image 5 ' hide 3 teste() end ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub teste() repeat : until mouse_y_position(2) <50 dim_local r%,g%,b% , x,y repeat x = mouse_x_position(3) : y = mouse_y_position(3) r% = rnd(255) : g% = rnd(255) : b% = rnd(255) : 2d_fill_color r%,g%,b% : 2d_rectangle 0,0,200,height(2) print_locate 2,10 : print r% : print_locate 2,80 : print g% : print_locate 2,200: print b% item_add 4,"x="+str$(x)+" y="+str$(y) wait 100 image_copy() :' à mettre en commentaire ou non until scancode = 27 end_sub
============================================================ sub image_copy() 2d_image_copy 5,left(2),top(2),width(2),height(2) 2d_target_is 0 : 2d_image_paste 5,0,0 : display 2d_target_is 2 : hide 2 end_sub |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 0:09 | |
| Apparemment cela semble normal pour vous. Étant le seul à ne pas comprendre, je me retire, et heureusement ça marche ainsi. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 0:33 | |
| Ne te retire pas mais attends un peu Silverman pourra te répondre à partir de vendredi soir normalement | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 14:46 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 16:52 | |
| Pour répondre à ta question, on part de quel programme: le tient tout en haut ou le dernier posté par Jean-Claude ? | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 17:17 | |
| salut avec le programme revu par jean claude je n'ai aucun scintillement chez moi avec le premier (en haut) çà clignote un max | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 17:26 | |
| heu... je ne crois pas avoir fait quoique ce soit sur ce post, Sergeause. Tu veux certainement parler de Silverman ou de Cosmos. | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 17:58 | |
| ça remonte à 2010.... j'ai déjà du mal à me souvenir de ce que j'ai mangéà midi ;alors 6 ans après ! Ce que je voulais dire c'est que la version que tu avais recopiée ne produisait aucun scintillement | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 18:16 | |
| Si tu as recopié le listing de Nardo, le Mar 31 Aoû 2010 - 9:08 .... C'est vrai que le code d'origine était de Nardo, j'ai regardé le post rapidement et c'est toi qui listait le dernier code, en survolant je ne savais pas s'il avait était modifié ou non par rapport à celui de Nardo... Je lis rapidement rapport à mon environnement de travail | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 18:26 | |
| | |
| | | Invité Invité
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 18:47 | |
| Bon, voici le code modifié: - Code:
-
' je promene ma souris ' escape pour sortir dim a,s ,c(100),x ,v ,d(100) width 0 ,1750 : height 0,1200 picture 2 : width 2 ,1650 : height 2,1100 : 2d_target_is 2 : HIDE 2 picture 3 : width 3 ,1650 : height 3,1100 : ' clone de 2 pour la souris image 4 v=1
for x= 1 to 5 repeat display if key_down_code = 27 then terminate if mouse_right_down(3)=0 display c(v)= mouse_x_position(3) : d(v)= mouse_y_position(3) :' la souris est testé sur le clone 2d_fill_color rnd(255), rnd(255),rnd (255) 2d_circle c(v),d(v),5 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
Mais je ne comprend toujours pas pouquoi le picture 3, on ne le voit pas. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Double buffer pour picture Jeu 11 Juin 2015 - 22:49 | |
| Mais pourquoi faire simple quand on peut faire compliqué ? - 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) until scancode <> 0
| |
| | | Contenu sponsorisé
| Sujet: Re: Double buffer pour picture | |
| |
| | | | Double buffer pour picture | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |