Desinner des rectancles a l'infini

dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 - 1 déc. 2013 à 18:28
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 - 2 déc. 2013 à 23:57
Bonjour,
je voudrais savoir si il y a un moyen de dessiner des rectangle a volonté (par exemple dé que je click sur un bouton) avec a chaque fois des coordonnés différentes (dans 2 tableau integer par x et y exemple)
merci

8 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 déc. 2013 à 23:32
à tester
public Class Form1
Private count As Integer = 0
Private Class datarectangle
Public left As Integer
Public top As Integer
Public width As Integer
Public height As Integer
'tu peux ajouter le brush pour remplir le rectangle
Public thepen As System.Drawing.Brush
'le constructeur
Public Sub New(ByVal leftrect As Integer, ByVal toprect As Integer, ByVal widthrect As Integer, ByVal heightrect As Integer, ByVal penrect As System.Drawing.Brush)
left = leftrect
top = toprect
width = widthrect
height = heightrect
thepen = penrect
End Sub
End Class
Private listdatarectangle As New List(Of datarectangle)
Private Sub FillListDataRectangle()
'on crée une instance de datarectangle
Dim rec As datarectangle
rec = New datarectangle(110, 10, 200, 50, Brushes.Cyan)
listdatarectangle.Add(rec)
rec = New datarectangle(10, 50, 100, 250, Brushes.Blue)
listdatarectangle.Add(rec)
rec = New datarectangle(310, 50, 100, 250, Brushes.BlueViolet)
listdatarectangle.Add(rec)
rec = New datarectangle(410, 250, 400, 250, Brushes.Blue)
listdatarectangle.Add(rec)
rec = New datarectangle(40, 150, 300, 250, Brushes.Red)
listdatarectangle.Add(rec)
rec = New datarectangle(350, 50, 100, 250, Brushes.Gold)
listdatarectangle.Add(rec)
End Sub
Private Sub DrawRectangle(ByRef gr As System.Drawing.Graphics, ByVal count As Integer)
For iter = 0 To count - 1
gr.FillRectangle(listdatarectangle(iter).thepen, listdatarectangle(iter).left, listdatarectangle(iter).top, listdatarectangle(iter).width, listdatarectangle(iter).height)

Next
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
FillListDataRectangle()
End Sub

Private Sub Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick
If count < listdatarectangle.Count Then
count += 1
Else
DirectCast(sender, Button).Enabled = False
End If
Refresh()

End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If count > 0 Then
DrawRectangle(e.Graphics, count)
End If
End Sub
End Class
1
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
2 déc. 2013 à 22:26
SUPER !!
c'est exactement ce qu'il me faut !
t'est génial !
je ne met pas tout de suite le sujet en résolut au cas ou j'aurais besoin toi
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
2 déc. 2013 à 23:00
dsl je voudrais savoir comment je pourrais faire pour faire en sorte que un objet réagisse toujours de la même manière au contacte de mon rectangle exemple
quand je déplace mon curseur sur mon rectangle (que se soit le premier tracer ou le dernier) mon curseur change
le pb c'est que la variable rec agis seulement sur le dernier rectangle tracé comment puis je faire pour agir tout aussi bien sur le premier que sur le dernier tracé ??
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 déc. 2013 à 23:27
changer le curseur dans chaque rectangle ?
explique toi
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
Modifié par dj naoki le 2/12/2013 à 23:44
oui c'est pas très claire dsl en faite je voudrais pouvoir garder le contrôle sur chaque rectangle
ex:
pouvoir avoir accès au propriété top,left ... de chaque rectangle.
l'idéale sa serais que je puisse faire comme un tableau pour la variable rec ( si c'est pas déjà le cas )
ex:
rec(0).top
rec(1).left

ou alors (la le must du must !)

designer tout les rectangles pour faire un truc du genres :


if me.cursor > " au top d'un des rectangles " then
me.cursor = moncurseur
end if
merci a toi pour ta disponibilité et ta paissance :p
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 déc. 2013 à 20:03
Bonjour

oui c'est possible
http://msdn.microsoft.com/en-us/library/system.drawing.graphics.drawrectangle(v=vs.110).aspx
la suite pas clair
que représente x et y le top et left ?
tous les rectangles ont la meme taille ?
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
1 déc. 2013 à 21:39
j'ai oublier de préciser ca pardon.
oui x représente le left et y le top après je ferais deux variables de plus pour width et heigth

merci
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
1 déc. 2013 à 22:05
je comprend pas trop comment ca marche...
mon pb c'est que quand je change x (par exemple) et je fait me.refresh et bien mon rectangle ce déplace un nouveau rectangle n'est pas crée.
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 déc. 2013 à 22:20
que veux tu faire
supposons que tu as une liste avec les données de chaque rectangles
ce sont des rectangles plein ou vide ?
je clique sur le bouton
cela doit dessiner un rectangle avec les premieres données de la liste et ainsi de suite ?
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
Modifié par dj naoki le 1/12/2013 à 23:21
oui c'est ca :)
peut importe ci les rectangles sont pleins ou vide (de préférence je choisi plein mais dans le cas contraire c'est pas un pb)

merci
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 déc. 2013 à 23:52
ajoute
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
Me.Cursor = Cursors.Arrow
For iter = 0 To count - 1
If New Rectangle(listdatarectangle(iter).left, listdatarectangle(iter).top, listdatarectangle(iter).width, listdatarectangle(iter).height).Contains(e.X, e.Y) Then
Me.Cursor = Me.Cursor = Cursors.Hand
End If
Next
End Sub
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
2 déc. 2013 à 23:57
TU EST MAGIQUE !!!!
merci (je te garde toujours sous la main CE N'EST PAS FINI! )

;p

merci
0
Rejoignez-nous