Forum Liberty Basic France

Le 12/06/2016 à 18h36

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 20
Bonjour !
Je ne comprends rien à la commande "redraw"...
Dans le petit programme ci-dessous (distribué avec LB) :

nomainwin
'segment.bas
'This program demonstrates the use of graphics
'segments. Five graphic segments are drawn, and
'then the second and fourth are deleted. Then
'the window is redrawn, causing the first, third,
'and fifth segments to be redrawn automatically.

'Open a graphics window
open "segment demo" for graphics as #draw
print #draw, "trapclose [quit]"

'Set up a large font and put the pen in the
'upper left corner
print #draw, "font arial 20"
print #draw, "place 10 25"

'Draw the words ONE, TWO, THREE, FOUR and FIVE
'each in its own segment (this is done with the
'flush command).
print #draw, "\ONE"
print #draw, "flush"
print #draw, "\TWO"
print #draw, "flush"
print #draw, "\THREE"
print #draw, "flush"
print #draw, "\FOUR"
print #draw, "flush"
print #draw, "\FIVE"
print #draw, "flush"

'Now delete the second and fourth segments, leaving
'only the drawn words ONE, THREE, and FIVE
print #draw, "delsegment 2"
print #draw, "delsegment 4"

'Now redraw so that the graphics will be displayed
'without the deleted segments.

' **************************************
print #draw, "redraw"
' **************************************
wait

[quit]
close #draw
end


Si on le fait tourner comme tel, tout va bien : il écrit "one - three - five" : OK
Si je fais " print #draw, "redraw 1", il écrit "one" : normal, c'est le segment 1 qui est affiché
Mais si je fais " print #draw, "redraw 3" ou " print #draw, "redraw 5", ça devrait normalement afficher "three" et "five", non ? Or, ça affiche tout le toutim : "One - two - three - four -five". Donc, les segments 2 et 4 ne semblent même pas avoir été détruits...

J'ai essayé toutes les façons grammaticales d'écrire le redraw : "redraw ";3 ou "redraw ";chr$(3), etc. Rien ne marche.

Merci de vos lumières !

1180michel

   
Le 12/06/2016 à 22h34

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Salut, de ce que je comprend, "redraw" est une instruction à part entière comme "flush"
Il n'est pas mentionné dans la doc de "redraw3 ni n"
"redraw" sert à redessiner les segments (après une modif sur l'un deux ou sur tous) sauf les supprimés (deleted) qui ne seront pas redessinés puisque perdus.
ça ressemble au "drawsprite" pour les segments
Tu peux aller voir ce lien ---> http://justbasic.conforums.com/index.cgi?board=games&action=display&num=1312047372
Où il est question de segments
____________________
Roro

   
Le 14/06/2016 à 14h58

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 20
Merci, mais dans le "help" de LB 4.5, il est quand même mentionné :

print #handle, "redraw"
or
print #handle, "redraw "; idNum
or
print #handle, "redraw "; segmentName

et
print #handle, "flush segmentName"

Mais comme j'ai dit, on dirait que ça ne fonctionne pas. Peut-être parce que je suis sous XP ? Mais je ne crois pas...

Merci et bonne journée,

1180michel

   
Le 14/06/2016 à 15h36

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 516
Hello !

pas tout à fait dans le sujet, je vais essayer de faire rapide. On a dans l'aide le passage : "When drawing to a graphics window or graphic box, the operations that are performed are stored in memory by Just BASIC so that lightning fast redraws can be performed. This storage function uses memory. If an application continually draws raphics, the system will eventually run out of memory and even potentially crash the computer. To prevent this, the application should only store those drawing operations which are needed to display its current state. The cls, delsegment, discard and flush commands help to manage graphics memory"

Peut-on dire que tant qu'on n'a pas défini de segments, tout ce qu'on affiche dans une fenêtre avec des instructions graphiques n'a aucun impact sur la mémoire, et on n'a pas besoin de gérer cette mémoire graphique avec cls, delsegment, discard flush et autres redraw ?

Réponse attendue oui, non, ou ptêt'bin, ou en trois lignes maxi, je voudrais pas trop dévier la discussion

'tophe
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie