Gambas France BETA


Pas de compte ? Incription

Dessiner une ligne dans drawArea avec la souris

123
AuteurMessages
PapyBasic#16 Posté le 23/9/2010 à 19:55:00
"Parfois l'obstination est une voie !"Bonsoir à tous,
je suis un débutant, je picore à gauche et à droite.
j'ai pas tout compris:
Mais à propos de ligne dans dans Draw Aera : Regardez :
1
' Gambas class filePUBLIC Lignex1 AS Float[600]PUBLIC Ligney1 AS Float[600]PUBLIC Lignex2 AS Float[600]PUBLIC Ligney2 AS Float[600]PUBLIC NLignes AS IntegerPUBLIC Clik AS IntegerPUBLIC X1p AS FloatPUBLIC Y1p AS FloatPUBLIC X2p AS FloatPUBLIC Y2p AS FloatPUBLIC SUB Form_Open()END

J'ai pas compris comment mettre le code sur fond jaune, mais bon, pas tout le même jour !
Cordialement Papy

1
PUBLIC SUB DrawingArea1_MouseMove()IF clik = 1 THENRetraceDraw.Begin(DrawingArea1)Draw.ForeColor = Color.BlueDraw.LineStyle = 1Draw.LineWidth = 1'Draw.Line(Mouse.X + 1, Y1p, Mouse.X, Mouse.y)Draw.EndENDIFENDPUBLIC SUB DrawingArea1_MouseDown() IF Mouse.Button = 1 THEN IF Clik = 0 THEN X1p = Mouse.X Y1p = Mouse.Y Clik = 1 ELSE IF clik = 1 THEN Retrace INC NLignes x2p = x1p + 1 Y2p = Y1p X1p = Mouse.X Y1p = Mouse.Y Lignex1[NLignes] = X1p Ligney1[NLignes] = Y1p 'Lignex2[NLignes] = X2p Ligney2[NLignes] = Y2p Draw.Begin(DrawingArea1) Draw.ForeColor = Color.Black Draw.LineStyle = 1 Draw.LineWidth = 1 Draw.Line(X1p, Y1p, x2p, y2p) ' Draw.Line(Mouse.X, Y1p, Mouse.X, Mouse.y) X2p = x1p 'n met le point de d épart à la fin de la ligne précédente Y2p = x2p Draw.End 'Lignex2[NLignes] = X1p 'Ligney2[NLignes] = Y1p 'X1p = Mouse.X 'on met le point de départ à la fin de la ligne précédente 'Y1p = Mouse.Y ENDIF ELSE IF Mouse.Button = 2 THENClik = 0RetraceENDIFENDPUBLIC SUB DrawingArea1_MouseUp()ENDPUBLIC Sce()DIM i AS Integer'DrawingArea1.ClearFOR i = 1 TO NLignes Draw.Begin(DrawingArea1) 'Draw.Line(Lignex1[i], Ligney1[i], Lignex2[i], Ligney2[i]) 'Draw.Line(X1p, Y1p, x2p, y2p) Draw.EndNEXTENDPUBLIC SUB DrawingArea1_Draw() ENDPUBLIC SUB Button1_Click()DrawingArea1.Clear END

:lol: :santa:
spheris#17 Posté le 23/9/2010 à 20:05:00
Papy Basic,
Lorsque tu postes une réponse, sélectionne le code que tu veux mettre en jaune puis clique sur ce bouton ci :



et ton code se met entre les 2 balises code et /code

Voila.
;)
lapenduledargent#18 Posté le 27/9/2010 à 13:33:00
Bonjour PapyBasic,

Je suis également dans le cambouis avec les outils graphique de Gambas... et je suis avec attention tes progrès avec les Draw Aera. :cheers:

Bon courage.

Tiens, un lien avec des exemples :
http://de.wikibooks.org/wiki/Gambas%3A_Druckversion%3A_Beispielprogramme

Pierre
PapyBasic#19 Posté le 27/9/2010 à 17:01:00
"Parfois l'obstination est une voie !"Bonjour à tous, je suis au boulot, mais je répond quand même (pas bien !) :P
Je vous passe ce soir les lignes de code de mes premiers essais.
Dans mon projet, il faut que je trace une (des) courbe (s) en fonction d'un (de) signal (signaux) variable (s) d'une part et de mon choix dans l'avance des X d'autre part. Via un timer.
Le signal variable sera issu d'une interface analogique numérique ou proviendra de la commande joystick d'une manette de jeu.Commande que j'utilise et détourne à des fins de mesures.
Pour autant, mon premier essais me laisse un petit gout amer, en effet, j'obtiens bien une simulation du signal, mais il se produit un "ralentissement" que je ne m'explique pas.
Voilà le pourquoi du comment qui fera que ce soir je passerai mes premiers essais.
Mon boulot me dévore 4 jours par semaine, mais j'ai la chance de faire un super boulot !
A ce soir, il faut que je bosse pour payer nos retraites
:lol!:
Cordialement Papy
lapenduledargent#20 Posté le 27/9/2010 à 17:05:00
Bon courage alors, ;)
A ce soir.

Pierre
PapyBasic#21 Posté le 27/9/2010 à 19:09:00
"Parfois l'obstination est une voie !"Voilà comme promis le code.
Je ne serais pas en ligne ce soir, je me lève tôt le matin et réserve mon temps libre pour demain soir si j'arrive à me connecter sur le tchat !
Mais dés que j'ai un peu de temps je code et teste !
Voilà les lignes de codes, qui ne sont qu'une copie et une modification des nombreux exemples de ce forum. Et de ceux qui me répondent, et un grand merci pour eux!
Si vous testez ces codes vous remarquerez que plus la boucle monte (incrémente ?) moins elle pédale vite, ou plus elle va lentement.
Hors mon choix de passer sur la banquise est motivé par la lenteur de la fenêtre bleu ! D’où mon inquiétude, pourquoi ce ralentissement ?
Ou modifier pour accélérer comme un "A" rouge chargé à 3 grammes ?
D'avance merci à demain Papy


Pour ce test, il faut :
- DrawingArea1
Button 1
Button2
Lbalel1
Label2
label3
Timer1
TextLabel1
Button2 est inactif !
Button1 efface l'écran est renvoie X à zéro et à gauche de l'écran.
"Y1p = Int(Rnd(30 + 1)) + 100" simule ce qui sera plus tard la valeur du signal sismique




1
' Gambas class filePUBLIC Lignex1 AS Float[86400]PUBLIC Ligney1 AS Float[86400]PUBLIC Lignex2 AS Float[86400]PUBLIC Ligney2 AS Float[86400]PUBLIC NLignes AS IntegerPUBLIC Clik AS IntegerPUBLIC X1p AS FloatPUBLIC Y1p AS FloatPUBLIC X2p AS FloatPUBLIC Y2p AS FloatPUBLIC Compteur AS FloatPUBLIC SUB Form_Open()ENDPUBLIC SUB DrawingArea1_MouseMove()IF clik = 1 THENRetraceDraw.Begin(DrawingArea1)Draw.ForeColor = Color.BlueDraw.LineStyle = 1Draw.LineWidth = 1'Draw.Line(Mouse.X + 1, Y1p, Mouse.X, Mouse.y)Draw.EndENDIFENDPUBLIC SUB DrawingArea1MouseDown() ENDPUBLIC SUB DrawingArea1_MouseUp()ENDPUBLIC SUB Retrace()DIM i AS Integer'DrawingArea1.ClearFOR i = 1 TO NLignes Draw.Begin(DrawingArea1) 'Draw.Line(Lignex1[i], Ligney1[i], Lignex2[i], Ligney2[i]) 'Draw.Line(X1p, Y1p, x2p, y2p) Draw.EndNEXTENDPUBLIC SUB DrawingArea1_Draw() timer1.enabled = TRUEENDPUBLIC SUB Button1_Click()DrawingArea1.Clear X1p = 0ENDPUBLIC SUB Label1_MouseDown() ENDPUBLIC SUB Timer1_Timer()compteur = compteur + 1Label3.caption = compteur ''' X1p = X1p + 1 Label2.Caption = X1p IF X1p > 700 THEN DrawingArea1.Clear IF X1p > 700 THEN X1p = 0 '''' Y1p = Int(Rnd(150 + 1)) + 20 ' Y1p = Mouse.Y INC NLignes X2p = X1p Y2p = Y1p X1p = X1p + 1 Y1p = Int(Rnd(30 + 1)) + 100 ' Y1p = Mouse.Y Lignex1[NLignes] = X1p Ligney1[NLignes] = Y1p Draw.Begin(DrawingArea1) Draw.ForeColor = Color.Black Draw.LineStyle = 1 Draw.LineWidth = 1 Draw.Line(X1p, Y1p, X2p, Y2p) ' Draw.Line(Mouse.X, Y1p, Mouse.X, Mouse.y) ' '' X2p = X1p 'n met le point de d épart à la fin de la ligne précédente '''Y2p = Y1p 'x2p Lignex2[NLignes] = X2p Ligney2[NLignes] = Y2p '''''Draw.Line(X1p, Y1p, X2p, Y2p) Label1.caption = Y1p Draw.End ' ENDIF Retrace'ENDIF ENDPUBLIC SUB Label2_MouseDown() ENDPUBLIC SUB Button2_Click()'IF clik = 1 THEN'Retrace'Draw.Begin(DrawingArea1)'Draw.ForeColor = Color.Blue'Draw.LineStyle = 1'Draw.LineWidth =raw.Line(X1p, Y1p, X2p, Y2p)'X2p = X1p 'n met le point de d épart à la fin de la ligne précédente ' Y2p = Y1p'Draw.End'ENDIFEND
spheris#22 Posté le 28/9/2010 à 12:33:00
PapyBasic,
il suffit simplement de modifier la propriété DELAY de ton timer qui correspond à l'unité milliseconde.
Par défaut tu as 1000 correspondant à 1 seconde.
Mets 30 et tu auras ton A rouge !
;) ;)
PapyBasic#23 Posté le 28/9/2010 à 18:23:00
"Parfois l'obstination est une voie !"Salut Sphéris, hé bé non !
aux alentours de 1800 boucles, avec delay = 1 , on approche l'escargot neurasthénique, moins de 3 lignes par secondes !
Là sa plante avec message genre "erreur innatendue, déclenchant le signal #6 , merci d'en informer le divin créateur !
Voilà. :suspect:
Et comme je suppose que le dit "Benoit" regarde probablement mes messages ....
Ô divin créateur, je suis prostré à vos genoux, "que faire ?" dit le vieux Papy :santa:
Prokopy#24 Posté le 28/9/2010 à 18:33:00
Kinder PinguiJ'aime bien "l'escargot neurasnéthique". :lol:

Plus sérieusement, c'est de plus en plus lent parce qu'à chaque tour de boucle du redessines toutes les lignes (et il y en a de plus en plus), ce qui est inutile. Tu peux mettre la propriété Cached de DrawingArea à TRUE pour qu'à chaque boucle tu n'aies qu'une seule nouvelle ligne à dessiner. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
PapyBasic#25 Posté le 28/9/2010 à 18:51:00
"Parfois l'obstination est une voie !"Heuuuuu je reprend calmement ta prose, là il faut que j'avale le truc, j'ai pas tout suivi !
J'ouvre l'éditeur de code et je regarde :shock:
Cordialement Papy
PapyBasic#26 Posté le 28/9/2010 à 19:11:00
"Parfois l'obstination est une voie !"Bonsoir, j'ai fait comme il a dit le monsieur, tout bien comme il faut.
Hé bien mes agneaux, mon escargot et mort d'un infarctus, ou bien il est en catalepsie !
Je suis sous une ligne toutes les trois secondes !
Arrrrgggg, je souffre que faire !
Bon en sortant d'un petit délire qui fait du bien après une journée à fond les manettes, je suis persuadé qu'il y a une autre solution, mais là je suis en panne.
De plus, il y a eu un séisme à Oléron aujourd'hui, et il faut que je traite les courbes.
Il n'y a pas d'urgences, un grand merci à tous pour votre aide.
Papy
spheris#27 Posté le 28/9/2010 à 21:31:00
Papybasic,
Je n'ai pas le soucis chez moi regarde :
http://gambaslinux.eg2.fr/img/heberger/essaipapybasic-0.0.2.tar.gz

prokopy, avec drawarea.cached = true, je n'ai plus d'affichage des courbes.
A+
;)
PapyBasic#28 Posté le 29/9/2010 à 20:09:00
"Parfois l'obstination est une voie !"Bonsoir, quand je télécharge l'exemple de prokopy, je n'arrive pas à ouvrir le dossier, hors je suis certain d'avoir eu une réponse par rapport à ce problème.
EssaiPapy........ .gz
Comment faut t-il faire pour ouvrir un "gz" (paquet Gambas je suppose) ?
il me semble qu'il faut cliquer sur un pictogramme "dé-compresseur" .
Bref si je trouve ou retrouve le tuto pour "ouvrir" vos exemples d'avance merci. :sunny:
Papy
PapyBasic#29 Posté le 29/9/2010 à 20:10:00
"Parfois l'obstination est une voie !"Bonsoir, quand je télécharge l'exemple de prokopy, je n'arrive pas à ouvrir le dossier, hors je suis certain d'avoir eu une réponse par rapport à ce problème.
EssaiPapy........ .gz
Comment faut t-il faire pour ouvrir un "gz" (paquet Gambas je suppose) ?
il me semble qu'il faut cliquer sur un pictogramme "dé-compresseur" .
Bref si je trouve ou retrouve le tuto pour "ouvrir" vos exemples d'avance merci. :sunny:
Papy
lapenduledargent#30 Posté le 29/9/2010 à 20:18:00
Bonsoir,

C'est un fichier compressé. Tu dois extraire l'archive par ex sur ton bureau et enfin l'ouvrir avec Gb.

A+

Pierre
123