Bonjour
y'a t-il un outil en .NET qui me permettra de créer une zonne de dessin;un truc comme le texte box mais cette fois ci on ne va pas écrire mais dessiner avec le curseur! des traits horizontaux,verticaux des tableaux...
MERCI
Version imprimable
Bonjour
y'a t-il un outil en .NET qui me permettra de créer une zonne de dessin;un truc comme le texte box mais cette fois ci on ne va pas écrire mais dessiner avec le curseur! des traits horizontaux,verticaux des tableaux...
MERCI
La réponse est oui ... :D
Le composant que tu utiliseras à l'écran sera vraisemblablement la PictureBox.
Tu lui affecteras une image.
Tu travailleras sur cette image via un objet Graphics.
Tu dessineras à l'aide des Pens, Brushes, Color, etc ...
... voilà les pistes à suivres.
Les possibilités sont assez étendues, par contre niveau vitesse faut pas trop lui en demander.
Pas de panique ! Je suis égallement loin d'être un expert.
Les classes que je viens de te citer sont extêmement riches et sont loin d'êtres les seules dont tu puisse te servir.
Pour demmarrer :
Bon courage pour la suite ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 'Tu place une pictureBox sur ta form ou tu la crée de facon dynamique comme ici Dim PB as new PictureBox PB.Size = New Size(100,100) Me.Controls.Add(PB) 'Supposant que ton code est dans la Form 'Tu crées une image Dim Img as new Bitmap(100,100) 'Tu crées un graphiqs pour cette image Dim G as new Graphics = Graphics.FromImage(Img) 'Tu travaille sur ce Graphics, ici un beau carré vert G.FillRectange(Colors.Green, 10,10,10,10) 'Pas sur des paramêtres ... 'Tu affiches ton travail PB.image = Img 'A moins que ce soit PB.Picture, Je sais plus ...
Je n'ai pas le lien exact, mais cherche aussi a telecharger le Visual Basic 2005 PowerPack (il marche aussi avec VB 2008). Il contient des controles tels que les lignes, rectangle ou ellipse qui peuvent t'aider a faire ce que tu souhaites.
Voici le lien de la derniere version 3.0
http://www.microsoft.com/downloads/d...displaylang=en
Je ne connais pas ce Visual Basic 2005 PowerPack et je vais sans doute le télécharger voir ce que ca donne.
Cela dit, sans vouloir jouer les chieurs, avant de foncer sur ce powerPack c'est toujours bon d'avoir quelques notions d'utilisation de la classe Graphics qui sert autant à l'écran que pour les travaux d'impression.
Je debute en VB2008 mais j'utilise les 2, par exemple disons que je dois tracer une courbe a la souris. Cette courbe est bien sur faite de plusieurs segements droits, et bien j'utilise la classe Graphics pour dessiner les segements deja definis mais j'utilise un controle LineShape pour afficher le segment en cours de definition (Son extremite 1 etant attachee au precedent segment, sa deuxieme extremite suivant la souris). Ca me permet une belle economie de code je trouve.
Voila un code incomplet certainement pas exempt de defaut mais qui devrait au moins te donner une base de depart.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 Imports System.Drawing PublicClass Form1 Dim g As Graphics PublicStructure DefinitionPointLigne Public X AsSingle Public Y AsSingle EndStructure Dim Ligne(0) As DefinitionPointLigne Dim NbPoints AsInteger PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load Me.PictureBox1.Image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height) PictureBox1.SendToBack() LineShape1.Visible = False EndSub PrivateSub PictureBox1_MouseClick(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick 'Redimensionnement du tableau pour pouvoir memoriser un point de plus NbPoints = NbPoints + 1 ReDimPreserve Ligne(NbPoints) 'Mise en memoire des coordonnees de la souris Ligne(NbPoints).X = e.X Ligne(NbPoints).Y = e.Y 'On ne trace la courbe que si on a au moins 2 points en memoire If NbPoints > 1 Then TraceLigne() 'Le controle shapeline a maintenant pour origine le dernier point clique LineShape1.Visible = True LineShape1.X1 = e.X LineShape1.Y1 = e.Y EndSub PrivateSub PictureBox1_MouseMove(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove 'La deuxieme extremite du controle shapeline suit la souris LineShape1.X2 = e.X LineShape1.Y2 = e.Y EndSub PublicSub TraceLigne() 'Trace des points en memoire Dim PointsToDraw(NbPoints - 1) As PointF Dim i AsInteger Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.Clear(PictureBox1.BackColor) For i = 1 To NbPoints PointsToDraw(i - 1).X = Ligne(i).X PointsToDraw(i - 1).Y = Ligne(i).Y Next g.DrawLines(Pens.Black, PointsToDraw) g.Flush() PictureBox1.Invalidate() g.Dispose() EndSub PrivateSub Form1_Resize(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Resize Me.PictureBox1.Image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height) If NbPoints > 1 Then TraceLigne() EndSub EndClass