Les tracés en Vb Net 2003; le mystère!
J'ai été initié a à VB 6 et sui en en initiation de VB Net 2003 par les ouvrages de Diane Zak
Excellente pédagogue, mais que de la bureautique! Si on ne veut pas programmer pour le Net, on voit mal à ce niveau l'avantage du VB Net!
Pour les constructions graphiques, représentation des fonctions affine et du 2e degré , paraboles etc....un jeu d'enfant avec VB 6 avec le Pset(x,y) et une boucle for next! C'est le langage Basic (du MS DOS) repris en compte sans déclarations spéciales, et les tracés immédiats!
Dans un autre livre, j'ai pu récupérer pour VB Net 2003, le seul tracé de la droite (Puis des cercles, rectangles ellipse dont je n'ai que faire).
Toute une messe de déclarations pour une simple droite! Et résoudre graphiquement avec ce seul outil droite, un système de droites y = ax + b m'a demandé une mine d'astuces et 4 boucles imbriquées contre une seule en VB6.
Et je n'ai jamais retouvé le point, élément de base pour toute représentation graphique.. Le pset(x,y) est mort !
Quant à printForm disparu, oublions! Pour imprimer, quelle galère !
Voyez: For x = n1 to n2 : y = a/x : pset(x,y) :next x
Et vous avez votre hyperbole en VB 6.
En VB Net, mystère, et sûrement complexité horible ! Tout comme les changements de formulaire qu'il faut déclarer... et j'en passe !
Et je me demande si je ne dois pas revenir au VB 6!
Votre avis ?
Courbes en VB Net, initiation
Citation:
Envoyé par
sperot51
il suffit de connaitre 1 millionième des possibilités graphiques du framework pour faire ca, je comprends pas ton problème
pour tracer une courbe, on fait évoluer X dans une boucle for et on calcule Y
Code:
1 2 3 4 5 6 7 8
|
dim old_pt, new_pt as System.Drawing.Point
for x blabla ...
new_pt.x = x
new_pt.y = calcul de y
me.Creategraphics.Drawline(old_pt,new_pt)
old_pt = new_pt
next |
il ne reste plus qu'à gérer le premier tour ou old_pt est à 0;0, surement calculer un old_pt pour le 1er x
y a quoi de compliqué la dedans ??
une fois que t'auras compris tout ca, si l'affichage est pas rapide, fais des recherches sur
bufferedgraphics
Bon, OK, merci à toi, j'aurais appris ici (et de toi, là), quelque chose plus vite que dans les bouquins! Et en effet ça marche aussi pour la droite! (Mais en mettant tous les "préambules" que j'avais vu sur livre de Halvorson, non remises ici.)
Pour la parabole, en revanche , ça marche aussi, mais ça bugue, car la parabole tracée, très, très bien, la branche gauche continue ensuite sa course en ligne droite jusqu'à(0.0) en coordonnées vraies de formulaire. Sauf si les branches vont au bord supérieur du formulaire. C'est joli, mais pas trop mathématiques.:D
Dans ce cas ci-dessous par exemple!
Pour explication, j'ai tracé un repère cartésien de centre O(400,280) et de vecteurs i et j respectivement de 18 et - 18 pixels (par unité, donc).
Mes formules de changement de repère sont ainsi x0 = 18 * x + 400 et
y0 = -18 * y + 280
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Dim PenColorparabole As New_ System.Drawing.PenSystem.Drawing.Color.Black)
Dim old_pt, new_pt As System.Drawing.Point
For x = -10 To 10
y = 0.1 * x ^ 2
x0 = 18 * x + 400
y0 = -18 * y + 280
new_pt.X = x0
new_pt.Y = y0
Me.CreateGraphics.DrawLine(PenColorParabole, old_pt, new_pt)
old_pt = new_pt
Next x |
Là, pas encore compris comment corriger cette prolongation par un segment de droite. Sans doute diminuer la fouchette -10 ; 10, mais bon!
PS: Mais merci au forum d'être conforme à son titre; j'en connais un si vous déposez comme ça une source jugée trop simple (pour eux!), on vous le dit, vous encombrez ....sympa moyen...:(