Gambas France BETA


Pas de compte ? Incription

Infos bulles Mouse?

123
AuteurMessages
jeanyvon#16 Posté le 8/3/2010 à 08:21:00
Gambas? Ma! Et gustoSalut,
Manu! ton coup de botte est à l'intérieur des 22 donc on revient au départ de l'action :study:
Je crois que ce que veux faire notre ami c'est un petit bout de texte attaché à la souris qui donne en fonction du pointeur sur la courbe tracée les valeurs de X et Y et si ce texte est à l'extérieur du dessin il perd une grande partie de l'intérêt du dessin qui est de démontrer la linéarité de X pendant que Y a une croissance tout autre! Il faut dire que ça existe et que les courbes ne s'effacent pas.
C'est pas simple comme problème... :scratch: :scratch: :geek:
Le truc serait de définir un pointeur modifiable: Je ne sais pas si ça peut se faire......Tien, un bel exemple de composant : un pointeur de courbe mathématique!
JY
Vieillir? On peut retarder mais pas y échapper!
Invité#17 Posté le 8/3/2010 à 13:02:00
Rien de logique : a quel niveau?

le label affiche les coordonées en fonction du point ou il se trouve sur la courbe! j'ai deja vu ca dans un prog et c bien pratique
Bien sur il est toujours possible de le coincer immobile dans un angle !

exactement J-Yvon , cette facon de faire existe et cela fonctionne

J'y arrive mais pas avec la propriété Cached.
J'y arrive si en fonction du deplacement de la souris, je renvoie vers ma page de calcul, si bien que tout est recalculer dans l'evenement mouse_move ; MAIS d'apres ce que qqun m'avait dit :GAMBIX :
terrnais tu ne redessine tout de même pas dans l'evènement mouse_move ?

il faut réduire au max tes calculs Smile

soit utiliser le rafraichissement dans l'evenement drawingarea_draw

soit mettre la proprété cached de drawingarea a true


il faut pas le faire : donc j'essai ! mais j'y arrive pas !
jeanyvon#18 Posté le 8/3/2010 à 16:04:00
Gambas? Ma! Et gustoHonnêtement je vois pas ce que tu reproche à ça?


Sachant bien sur que toutes les valeur de Y sont retournées en fonction du X du clic_souris.
J'ai mis mon ballon info dans le mousedown de la drawaera et je calcul Y en fonction du X souris je suis juste même si c'est des sliders qui déterminent A,B,C. Il suffit que ces valeurs soit en publique.
A+
JY
Vieillir? On peut retarder mais pas y échapper!
Invité#19 Posté le 8/3/2010 à 19:13:00
Oui Jean-Yvon j'avais essayé après que tu m'en ai parlé, mais j'ai trouvé que le retour des coordonnées était trop lent c tout!

Mais c sur que c la solution que je prendrai si je n'arrive pas a faire ce que je veux ! ça me permet aussi d'apprendre gambas : et là j'ai du boulot !

je pense que ce soir je vais essayer ta proposition avec une deuxieme drawAerea , je pense que cela peut fonctionner pas mal, et en plus, cela me permettre d'affiner mon truc
Car en fait il dans mon prog y a pas que les coordonnées qui suivent la souris mais aussi une paralelle à l'axe X et une Parallele a l'axe Y, ce qui me permet d'avoir une visue nikellle sur les points recherchés !

A+
micio#20 Posté le 8/3/2010 à 21:24:00
Je ne sais si ça pourra aider mais j'ai fait un petit test (ci-dessous) je n'ai pas de problème d'effacement dans la drawarea avec le textlabel. (le dessin c'est pas trop mon truc)


1
PUBLIC SUB Form_Open() tlabel1.Visible = FALSE Draw.Begin(DArea1) Draw.Circle(100, 150, 50) Draw.Rect(50, 100, 100, 100) Draw.End()ENDPUBLIC SUB DArea1_Mousemove()' WAIT 0.01 tlabel1.Visible = TRUE tlabel1.x = Mouse.ScreenX tlabel1.y = Mouse.ScreenY tlabel1.text = "x = " & Str(Mouse.X) & "\ny = " & Str(Mouse.Y) Draw.Begin(DArea1) Draw.LineWidth = 20 Draw.Point(Mouse.x, Mouse.Y)' Draw.Point(Mouse.x + 1, Mouse.Y + 1) Draw.End() IF Mouse.x < 0 OR Mouse.y < 0 OR Mouse.x > darea1.W OR Mouse.y > darea1.H THEN DArea1_MouseUp() END IFENDPUBLIC SUB DArea1_MouseUp() tlabel1.Visible = FALSEEND
Invité#21 Posté le 8/3/2010 à 23:05:00
oui micio j'ai essayé comme ca avec cached activé
c ok le dessin n'est pas efface par le label
Mais vu que je redessine plusieurs fois sur ma draw et que cached est activé, et bien cela me fait un caleidoscope ca reécrit dessus
meme en utilisant refresh
et si je met clear ya tou qui disparait!

En fait j'ai plusieurs boutons en fonction des dessins que je fais, et avec cached activé c le bordel!

Refreh doit etre mis a quel moment : avnt de dessiner ? avant chaque action des boutons?
micio#22 Posté le 9/3/2010 à 09:34:00
J'ai le sentiment que l'énoncé du problème est incomplet ... alors pas facile !
gambix#23 Posté le 9/3/2010 à 12:30:00
Faire simple !en fait oui c'est le pb ... c'est incomplet ... et mal conçut ... tu devrait dessiné via la procedure _draw du drawingarea...

et on ne redessine jamais dans un mouse_move !... la procedure intervient avant le déplacement du label ... donc normal que ça reste effacé !
Moins de texte dans une signature c'est agrandir son espace.
Invité#24 Posté le 9/3/2010 à 14:29:00
au lieu d'essayer d'expliquer :

1
PUBLIC SUB Form_Open()Draw.Begin(DrawingArea1)Label4Bulle.Visible = FALSEENDPUBLIC SUB DrawingArea1_Draw()ENDPUBLIC SUB Button1_TracerCourbe_Click()DrawingArea1.RefreshEchelleX.Enabled = TRUEEchelleY.Enabled = TRUE'***1°) - Tracer le repèretracer_repere()'***2°) - Graduer le repèregraduer_repere()'***3°) - Tracer la fonctiontracer_fonction()clavier = FALSEENDPUBLIC SUB Button2EchelleAuto_Click() EchelleX.Value = Abs(Round(SommetCourbeX, -2)) * 100 EchelleY.value = Abs(Round(SommetCourbeY, -2)) * 100Button1_TracerCourbe_ClickENDPUBLIC SUB SliderVariationB_Change()TextBox1_Entrer_b.Text = SliderVariationB.valueLabel2AffichageVariationB.Text = SliderVariationB.ValueIF clavier = FALSE THEN Button1_Calcul_Delta_Click Button1_Cal_Solutions_Click Button1_TracerCourbe_Click END IF Label2Tangente.Text = "" ListBox2Tgte.ClearENDPUBLIC SUB DrawingArea1_MouseMove() Label4Bulle.Visible = TRUEDraw.Begin(DrawingArea1)'si besoin de désiiner avec mouse_moveDraw.End()DrawingArea1.Mouse = Mouse.Crossunitx = DrawingArea1.W / EchelleX.Value unity = Drawa1.H / EchelleY.ValuePosiX = (Mouse.X - DrawingArea1.W / 2) / unitxPosiX = Round(PosiX, -2)PosiY = - (Mouse.Y - DrawingArea1.H / 2) / unityPosiY = Round(PosiY, -2) Label4Bulle.X = Mouse.X + 174 Label4Bulle.Y = Mouse.Y + 1 Label4Bulle.Caption = " X = " & PosiX & " Y = " & PosiYLabel4Bulle.Visible = TRUEIF Mouse.x < 0 OR Mouse.y < 0 OR Mouse.x > DrawingArea1.W OR Mouse.y > DrawingArea1.H THEN DrawingArea1_MouseUp() DrawingArea1.Mouse = Mouse.DefaultEND IFEND'****************************************************************************************************************


Et j'ai comme cela plusieurs bouton_click et plusieurs echelles et sliders qui dessinent sur ce meme graphique

D'autre part, pour la suite, une ligne parall a X et une Parall à Y qui suivra le curseur!
jeanyvon#25 Posté le 9/3/2010 à 14:53:00
Gambas? Ma! Et gustoHello!
C'est pas pour dire mais c'est pas simple!
Tu n'aurais pas intérêt à avoir plusieurs feuilles pour avoir un code un peu moins hard?
Ceci n'engage que moi et les conseilleurs..... :affraid:
A+
JY
Vieillir? On peut retarder mais pas y échapper!
micio#26 Posté le 9/3/2010 à 17:46:00
1
PUBLIC SUB Form_Open() ' ? Draw.Begin(DrawingArea1) ? Label4Bulle.Visible = FALSEEND

Je ne vois pas l'utilité de cette ligne
-----------------------------------------------

Hors mis la remarque ci-dessus, dans le code que vous avez posté on remarque la présence de 2 instructions Draw.Begin(DrawingArea1) alors qu'il n'y a qu'1 instruction Draw.End()

Je ne suis pas allez plus loin pour l'instant
Invité#27 Posté le 9/3/2010 à 18:28:00
effectivement le dernier draw end se trouve sur le bouton quitter
1
PUBLIC SUB Button1_Quitter_Click() Draw.End() ' fermeture des drawing opérations ME.Close ' fermeture de la formEND


Donc
1
PUBLIC SUB Form_Open() ' ? Draw.Begin(DrawingArea1) ? Label4Bulle.Visible = FALSEEND
: ce draw.begin(drawingArea1) doit etre effectif?
Invité#28 Posté le 9/3/2010 à 18:32:00
C'est pas pour dire mais c'est pas simple!
Tu n'aurais pas intérêt à avoir plusieurs feuilles pour avoir un code un peu moins hard?


Plusieurs feuilles ? Si je peux faire ce que je veux oui Mais, Le but pour moi est que tout ces tracés, sur une seule draw, ont un but spécifique!

je suis preneur de toutes idées
Merci
micio#29 Posté le 9/3/2010 à 18:51:00
'on dessine un truc
Draw.Begin( ... ) 'début du dessin (on précise la surface ... )
'on dessine
... ...
Draw.xxxxx
... ...
... ...
Draw.End() 'on termine

'on dessine autre chose
Draw.Begin( ... ) 'début du dessin (on précise la surface ... )
'on dessine
... ...
Draw.xxxxx
... ...
... ...
Draw.End() 'on termine

oooooooooooooooooooo

etc. etc.

Si toute fois j'ai bien compris (pas sûr).
Invité#30 Posté le 9/3/2010 à 21:22:00
Non c'est bcp plus simple

Draw.begin 'debut de session'on precise la surface

Button clic : on dessine dessin1
btton clic on dessine dessin2
slide : on fait varié une ou plusieurs valeu de dessin1r : on redessine dessin1
slid2 : on fait varié une ou plusieurs valeur de dessin2 : on redessine dessin2
button clic on dessine dessin 3
slide : on fait varie l'echelleX des la draw
slide on fait varié l'echelle Y de la draw
slide on adapte l'echelle en fonction de certaines valeurs de dessin1 ou 2
etc....
button clic : draw.end on termine

ET avec la mouse.move : le label suiveur
avec ou pas (pas encore fini) un axeX et un axeY accroché au pointeur

c simple

Je viens de mettre cached a true à la fin du module qui recoit les infos pour dessiner, et NON par defautl
Car avec cached par default j'ai l'effet caleidoscope
De facon a ce que la draw soit a cached=true quand le label vient se balader : et ben meme avec cached=true le label efface la draw lors de son deplacement

j'ai verifie avec un label sur ma form la valeur de cached false ou true.
123