Comment tracer un rectangle dans un picturebox en VB.NET

Messages postés
10
Date d'inscription
dimanche 16 novembre 2003
Statut
Membre
Dernière intervention
10 décembre 2004
- - Dernière réponse : Whismeril
Messages postés
13979
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 novembre 2019
- 26 mai 2015 à 11:13
Bonjour,

J'aimerai tracer un rectangle en vb.net, j'y arrivai en vb6 mais en .net pbs.

J'ai un picturebox nommé graph et je faisais
graph.line (x, y) - (x', y')
et pour effacer
graph.cls

commment fait on en .net ??

merci de me répondre
Afficher la suite 

14 réponses

Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008
0
Merci
Salut,

Et bien pour dessiner un rectangle avec une bordure sans l'intérieur rempli, il faut définir un trait (Pen) et un rectangle avec ses coordonnées et ses dimensions :

d'abord tu mets :

imports System.Drawing.Drawing2D

au dessus de Public Class Form1

puis dans l'évènement PictureBox1_Paint(...) tape :

Dim P as pen
Dim R as Rectangle

P = New Pen(Color.Red)
P.Width=5
P.Alignment = PenAlignment.Inset
R= New Rectangle (0,0, PictureBox1.Width -1, PictureBox1.Height -1)

e.graphics.DrawRectangle (P, R)

pour un rectangle de bord rouge et d'épaisseur 5 pixels par exemple

Maintenant si c'était pour un rectangle plein, c'est un pinceau (Brush) qu'il faut utiliser et FillRectangle :

Dim BR as Brush

BR = New SolidBrush (Color.Yellow)

e.Graphics.FillRectangle (BR, R)

et t'auras à la place un rectangle rempli de jaune dans ta PictureBox1 !

Va voir ma toute première source justement :
http://www.vbfrance.com/code.aspx?ID=19268

J'utilise la classe GDi+ et les rectangles à gogo !

A+

TIGER
Commenter la réponse de TigerFab
Messages postés
1
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
22 mai 2015
0
Merci
Tiger,

Comment fait tu lorsque tu veux faire la meme chose mais quand tu appuie sur button1?

Valentin
Commenter la réponse de valentin445
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour, Valentin ===>> réponse à ta question : la même chose, en utilisant l'évènement Click de ce bouton !
Commenter la réponse de ucfoutu
0
Merci
Il me dit que l'événement e ne contient pas de définition pour graphics. Car pour pictureBox1_Paint on a: System.Windows.Forms.PaintEventArgs e.
Alors que pour button1_Click_1 on a: EventArgs e
Commenter la réponse de valentin445
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
utiliser un code, c'est d'abord le comprendre (et non copier/coller ce qui a été écrit dans un autre contexte).
C'est dans une picturebox, que tu veux dessiner ? ===>>
même moi, qui ignore tout de VB.Net, comprends bien qu'il me faut avant tout créer un graphique dans cette picturebox, genre
Dim toto As Graphics = ma_picturebox.CreateGraphics()
puis (et seulement puis) ===>>
y dessiner ce rectangle, genre ===>>
toto.DrawRectangle .....(avec ses paramètres).
Commenter la réponse de ucfoutu
0
Merci
Je suis bien d'accord avec toi ucfoutu mais je debute tout juste en POO et j'ai un peu de mal.
Pour l'instant j'en suis la:
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black, 1);
pictureBox1.BackColor = System.Drawing.Color.Teal;
Graphics g = e.Graphics;
g.DrawRectangle(blackPen, 0, 0, 639, 479);

}

private void button1_Click_1(object sender, EventArgs e)
{


}
et je voudrais dans button1_click_1 faire un rectangle dans picturebox.
Commenter la réponse de valentin445
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Il me semble que je viens de te répondre, non ?
Qu'attends-tu donc pour appliquer ?


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Tiens ! Regarde ce que je viens de voir en fouillant sur le net :
http://www.codeproject.com/Questions/374235/DrawRectangle-in-a-Picture-box
Regarde la solution SOLUTION 1
Etrange, non ? Elle correspond à ce que je t'ai exposé.

PS : j'espère que tu as compris que ce qui se trouve au Form_load ne te concerne pas (ajout dynamique du bputon et de la picturebox alors que toi, tu les crées en mode création)
j'observe par contre qu'une propriété y est spécifiée ( pictureBox1.Dock = DockStyle.Fill). Je ne sais pas à quoi elle correspond (je ne connais rien de VB.Net !) et s'il est nécessaire que tu la spécifies en mode création, donc !
Plus, ami, vraiment ... je ne peux pas !
Commenter la réponse de ucfoutu
Messages postés
6345
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2019
88
0
Merci
Bonjour,

Voilà, mais comme le dit si justement ucfoutu que je salue, il faut apprendre les bases:

  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim MyPen As New Pen(Color.Black, 5)'contour
        Dim g As Graphics
        g = Me.CreateGraphics
        g.DrawRectangle(MyPen, 100, 50, 80, 40) 'contour
        g.FillRectangle(New SolidBrush(Color.Red), 100, 50, 80, 40) 'fond
    End Sub

cs_Le Pivert
Messages postés
6345
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2019
88 -
Tiens, si tu veux t'y intéresser, tout est expliqué ici:

http://plasserre.developpez.com/cours/vb-net/?page=windows-forms2#LX-G-2
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214 -
Salut, Le Pivert,
N'aurais-tu pas commis une petite erreur, avec ce Me dans
g = Me.CreateGraphics
cela ne va-t-il pas dessiner sur le Form au lieu de la picturebox ?
cs_Le Pivert
Messages postés
6345
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2019
88 > ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Tu as tout à fait raison, je suis parti sur le Form. Il suffit de rectifier sur la PictureBox, cela devrait coller. Je vérifie.
Commenter la réponse de cs_Le Pivert
Messages postés
6345
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2019
88
0
Merci
voici le code corrigé:

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim MyPen As New Pen(Color.Black, 5) 'contour
        Dim graphics1 As Graphics = PictureBox1.CreateGraphics()
        graphics1.DrawRectangle(MyPen, 100, 50, 80, 40) 'contour
        graphics1.FillRectangle(New SolidBrush(Color.Red), 100, 50, 80, 40) 'fond
        graphics1.Dispose()
    End Sub


Merci ucfoutu
Commenter la réponse de cs_Le Pivert
Messages postés
6345
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2019
88
0
Merci
Quand je vois ceci, je m'interroge si notre ami Valentin programme en VB.NET et qu'il ne s'est pas trompé de forum!!!!!!!!

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black, 1);
pictureBox1.BackColor = System.Drawing.Color.Teal;
Graphics g = e.Graphics;
g.DrawRectangle(blackPen, 0, 0, 639, 479);

}

private void button1_Click_1(object sender, EventArgs e)
{


}

Commenter la réponse de cs_Le Pivert
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Je crois simplement qu'il est de plus en plus fréquent de trouver des copieurs/colleurs qui n'ont pas compris que la création était autre chose et passait par la compréhension et la maîtrise. Je n'ai à ce propos jamais compris que l'on ne se contente alors pas, dans ces conditions, d'utiliser des logiciels tout faits, plutôt que de se donner l'illusion d'avoir "développé" !
Je sais que mes mots sont rudes. Je n'en changerai toutefois jamais un seul iota. (est-ce un défaut ?).
Zermelo
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13 -
Bonjour ucfoutu.
Dans un cas pareil, je préfère conseiller au demandeur d'ouvrir son explorateur d'objets et d'y chercher la classe Graphics. C'est rude, mais sans mots rudes.
Cordialement.
Commenter la réponse de ucfoutu
0
Merci
Je pense également que je me suis trompé de forum, puisque je n'ai pas la même typographie que vous. Mais grâce à vous j'ai quand même réussi donc je vous en remercie.
Whismeril
Messages postés
13979
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 novembre 2019
319 -
Bonjour Typographie?
Non seulement tu t'es trompé de forum, je parierais que tu "codes" en C#, mais de métier aussi, on ne fait pas d'imprimerie ici.....
La programmation est un langage, tout comme le français, et pour tout langage il faut utiliser les bons mots au bon endroit. Ca s'appelle la syntaxe.
Commenter la réponse de valentin445
0
Merci
Autre question. Est'il possible d'incliner ce rectangle?
Whismeril
Messages postés
13979
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 novembre 2019
319 -
Pour ta première question, tu exhumes un vieux sujet, même pas dans ton langage
Pour ta seconde question, merci de creer ton propre sujet, dans le bon forum et en utlisation la coloration syntaxique.
Ceci conformément à la charte du site
Commenter la réponse de valentin445