123 | |||
Auteur | Messages | ||
---|---|---|---|
manu | #1 Posté le 12/3/2010 à 17:52:00 | ||
Avec Gambas ca roule ! | Donc le but c'est de tracer une ligne droite dans une drawarea à la manière de paint ou autre. Je clique sur un point de l'écran, je maintiens cliqué quand je déplace ma souris : la ligne se dessine au fur et a mesure que je déplace la souris. Quand je relâche mon bouton de souris la ligne se fige. Bon vous aller me dire fastoche... draw.line(X debut, y debut, x Fin, Y fin) Bon ça c'est le principe général Voila ce que j'ai fait :
Bon ça, ça me donne presque le bon résultat sauf que je travaille à l'aveugle car quand je déplace ma souris, ma ligne ne se dessine pas. Normal, puisque elle se dessine dans l'Event _MouseUp. Si je mets Draw.Line dans l'Event_MouseMove, c'est une succession de ligne qui se dessinent à partir de la position de départ, C'est très jolie mais c'est pas l'effet souhaité :). Avez vous une idée ? Merci d'avance Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
jeanyvon | #2 Posté le 12/3/2010 à 21:23:00 | ||
Gambas? Ma! Et gusto | Bonsoir, Je ne sais pas si on peut le faire. On a pas d'objet line et je ne sais pas si on peut le créer. Et en plus on travail sur plusieurs calques un avec le trait provisoire (mouse.move) et l'autre pour le tracer définitif. Si j'ai bien compris tu veux tracer une ligne droite? A + JY Vieillir? On peut retarder mais pas y échapper! | ||
manu | #3 Posté le 12/3/2010 à 21:28:00 | ||
Avec Gambas ca roule ! | Oui, ou un carré ou une ellipse... le problème est le même. En tous cas pas des points Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
spheris | #4 Posté le 12/3/2010 à 22:48:00 | ||
j'ai modifié ta fonction et cela donne : PUBLIC SUB DrawingArea1_MouseMove() iPosMouseFinX = Mouse.X iPosMouseFinY = Mouse.Y Draw.Line(iPosMouseDebX, iPosMouseDebY, iPosMouseFinX, iPosMouseFinY) DrawingArea1.Refresh END c'est pas génial mais ca marche... | |||
manu | #5 Posté le 12/3/2010 à 22:55:00 | ||
Avec Gambas ca roule ! | Ça fait plein de lignes ça.... !!! C'est pas ça ce que je veux faire... Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
spheris | #6 Posté le 12/3/2010 à 23:01:00 | ||
pas sur mon PC si tu as drawingarea1.refresh | |||
manu | #7 Posté le 12/3/2010 à 23:07:00 | ||
Avec Gambas ca roule ! | Bizarre, ca fait plein de lignes chez moi ! Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Bernard | #8 Posté le 14/3/2010 à 23:25:00 | ||
Bonsoir Manu est-ce que cela peux t'aider dans l'immediat? ' Gambas class file PUBLIC Lignex1 AS Float[100] PUBLIC Ligney1 AS Float[100] PUBLIC Lignex2 AS Float[100] PUBLIC Ligney2 AS Float[100] PUBLIC NLignes AS Integer PUBLIC Clik AS Integer PUBLIC X1p AS Float PUBLIC Y1p AS Float PUBLIC SUB Form_Open() END PUBLIC SUB DrawingArea1_MouseMove() IF clik = 1 THEN Retrace Draw.Begin(DrawingArea1) Draw.ForeColor = Color.Blue Draw.LineStyle = 1 Draw.LineWidth = 1 Draw.Line(X1p, Y1p, Mouse.X, Mouse.y) Draw.End ENDIF END PUBLIC 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 Lignex1[NLignes] = X1p Ligney1[NLignes] = Y1p Lignex2[NLignes] = Mouse.X Ligney2[NLignes] = Mouse.y Draw.Begin(DrawingArea1) Draw.ForeColor = Color.Black Draw.LineStyle = 1 Draw.LineWidth = 1 Draw.Line(X1p, Y1p, Mouse.X, Mouse.y) Draw.End 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 THEN Clik = 0 Retrace ENDIF END PUBLIC SUB Retrace() DIM i AS Integer DrawingArea1.Clear FOR i = 1 TO NLignes Draw.Begin(DrawingArea1) Draw.Line(Lignex1, Ligney1, Lignex2, Ligney2) Draw.End NEXT END | |||
Bernard | #9 Posté le 14/3/2010 à 23:44:00 | ||
J'ai oublié un petit détail qui à son importance, mettre le DrawingArea en mode Tracking=True | |||
jeanyvon | #10 Posté le 15/3/2010 à 07:46:00 | ||
Gambas? Ma! Et gusto | Salut, Je ne sais pas si ça peut aider Manu mais moi ça m'éblouit Bien sur, propriété cached à true et on trace jusqu'à 100 lignes. Ce n'est pas autocad mais c'est le début et pour moi quels progrès je vais faire avec ce code Merci Bernard! Surtout bien venu! A+ JY Vieillir? On peut retarder mais pas y échapper! | ||
manu | #11 Posté le 15/3/2010 à 08:15:00 | ||
Avec Gambas ca roule ! | Ok Merci Bernard, Effectivement ça n'était pas ma question mais ta proposition de code m'a permis, en s'en inspirant, un, de régler mon problème, et deux, de donner une fonction supplémentaire à mon application Merci encore Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Bernard | #12 Posté le 15/3/2010 à 19:07:00 | ||
De rien, on est ici pour s'entraider, et je suis très heureux d'avoir pu le faire. Merci de votre accueil. à plus Bernard | |||
gambix | #13 Posté le 15/3/2010 à 21:19:00 | ||
Faire simple ! | PUBLIC SUB DrawingArea1_MouseMove() iPosMouseFinX = Mouse.X iPosMouseFinY = Mouse.Y draw.line ( iPosMouseDebX, iPosMouseDebY,iPosMouseFinX , iPosMouseFinY) iPosMouseFinX=iPosMouseDebX iPosMouseFinY=iPosMouseDebY END et voila ... la ça doit marcher Moins de texte dans une signature c'est agrandir son espace. | ||
gambix | #14 Posté le 15/3/2010 à 21:20:00 | ||
Faire simple ! | et TRACKING a TRUE bien sur Moins de texte dans une signature c'est agrandir son espace. | ||
thegambasdeur | #15 Posté le 16/4/2010 à 20:12:00 | ||
ou
cela marche aussi | |||
123 |