Une partie du dessin ne s'affiche pas [Résolu]

Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 27 févr. 2017 à 17:59 - Dernière réponse : Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention
- 2 mars 2017 à 22:10
Bonjour,
ça fait un moment que je n'ai pas eu de problème en codant une application l'application que je suis en train de créer consiste à remplir un une ListView et dessiner sur une Picturebox en même temps
le dessin peut être très long, alors j'ai opté pour la méthode suivante :
je mets la PictureBox1 dans un Panel et j'active la fonction AutoScroll du Panel (Panel.AutoScroll = True), comme ça je peux consulter tout le dessin
une partie de dessin ne s'affiche pas
voici le code :
    Dim i As Integer = 0
Dim X As Integer = 20
Dim F As Integer = 0
Dim Y1 As Integer = 20
Dim Y2 As Integer = 50
Dim AfficherDessin As Boolean = False
Dim Point_Appuis1 As Integer = 0
Dim Plus As Integer
'Remplire la ListVieW
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If i = 0 Then
ListViewEx1.Columns.Add("Valeur " & 0, 0, HorizontalAlignment.Center)
ListViewEx1.Items.Add("")
ListViewEx1.Columns.Add("Valeur " & 1, 100, HorizontalAlignment.Center)
ListViewEx1.Items(0).SubItems.Add(TextBox1.Text)
Plus = (Math.Round(CDbl(TextBox1.Text), 0) * 20)
ListViewEx1.Width = ListViewEx1.Width + 5
PictureBox1.Width = PictureBox1.Width + (Math.Round(CDbl(TextBox1.Text), 0) * 20)
ElseIf i > 0 Then
ListViewEx1.Width = ListViewEx1.Width + 100
ListViewEx1.Columns.Add("Valeur " & i + 1, 100, HorizontalAlignment.Center)
ListViewEx1.Items(0).SubItems.Add(TextBox1.Text)
Plus = (Math.Round(CDbl(TextBox1.Text), 0) * 20)
PictureBox1.Width = PictureBox1.Width + (Math.Round(CDbl(TextBox1.Text), 0) * 20)
End If
Panel2.AutoScrollPosition = New Point(Panel2.HorizontalScroll.Maximum, 0)
i = i + 1
ListViewEx1.OwnerDraw = True
PictureBox1.Invalidate()
AfficherDessin = True
TextBox1.Focus()
TextBox1.Clear()
X = F
End Sub


voici le tableau (ListView) :

'Dessin
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
If AfficherDessin = True Then
'Dissiner les fleches
For Fleche_X As Integer = 20 To X + Plus Step 20
e.Graphics.DrawLine(New Pen(New SolidBrush(Color.Black), 2), Fleche_X, Y1, Fleche_X, Y2)
e.Graphics.FillPolygon(New SolidBrush(Color.Black), _
{New Point(Fleche_X, Y2 + 2), _
New Point(Fleche_X - 5, Y2 - 12), _
New Point(Fleche_X, Y2 - 8), _
New Point(Fleche_X + 4, Y2 - 12), _
New Point(Fleche_X, Y2 + 2)})
F = X + Plus
Next
e.Graphics.DrawLine(New Pen(New SolidBrush(Color.Black), 2), 20, Y1 + 1, F, Y1 + 1)
e.Graphics.DrawLine(New Pen(New SolidBrush(Color.Black), 2), 20, Y2 + 1, F, Y2 + 1)
'Dissiner le Triangle
For Appuis As Integer = 1 To i
Point_Appuis1 = Point_Appuis1 + Math.Round(CDbl(ListViewEx1.Items(0).SubItems(Appuis).Text), 0) * 20
Dim blackPen As New Pen(Color.Black, 1)
Dim pointA1 As New Point(Point_Appuis1, Y2)
Dim pointA2 As New Point(Point_Appuis1 - 10, Y2 + 15)
Dim pointA3 As New Point(Point_Appuis1 + 10, Y2 + 15)
Dim pointA4 As New Point(Point_Appuis1, Y2)
Dim curvePoints1 As Point() = {pointA1, pointA2, pointA3, pointA4}
e.Graphics.DrawPolygon(blackPen, curvePoints1)
Next
End If
End Sub

Voici comment le dessin s'affiche :

et Voici comment il doit être :

j'espère que j'ai bien expliquer (sinon je peux recommencer)
aidez moi s'il vous plaît à résoudre ce problème, et merci d'avance pour tout aide
Afficher la suite 

18 réponses

Répondre au sujet
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 27 févr. 2017 à 21:19
0
Utile
Bonjour
1) As-tu mis Option Explicit et Option Strict sur ton projet ?
2) As-tu enlevé l'importation de la référence Microsoft Visual Basic ?
Je crois que non
3)

Dim i As Integer = 0
Dim X As Integer = 20
Dim F As Integer = 0
Dim Y1 As Integer = 20
Dim Y2 As Integer = 50
Dim AfficherDessin As Boolean = False
Dim Point_Appuis1 As Integer = 0
Dim Plus As Integer

Mets plutôt des Private à la place des Dim car ces variables sont utilisées dans tout ton code au niveau de la Form et non dans une seule procédure . On réserve plutôt Dim aux variables ne servant que dans une seuls procédure ( Sub ou Function selon) .
4) les variables i et j sont généralement utilisées pour les boucles :
For i = 0 to 10

Hors tu utilises i comme compteur de colonnes si j'ai bien compris !
5) Mets un point d'arrèt sur
For Appuis As Integer = 1 To i
et regarde la valeur de i car ce sont juste les triangles qui ne s'affichent pas si j'ai bien compris
6) Peux-tu expliquer ce que tu veux faire exactement ? A quoi correspondent les valeurs de la listview et que représente le dessin de la PictureBox ?
Commenter la réponse de vb95
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - Modifié par Karin.code le 27/02/2017 à 22:03
0
Utile
11
Bonsoir Vb95
tout d'abord merci pour ta réponse
j'ai fait comme tu as suggéré dans la 1er, 2eme, 3eme, 4eme et 5eme remarque
dans la 5eme remarque quand je mets un point d'arrèt sur
For Appuis As Integer = 1 To i
et quand je clique sur le Button1 pour la première fois la valeur de N = 1 j'ai remplacer "i" par "N"
je clique sur le Button1 pour la deuxième fois la valeur de N = 2
je clique sur le Button1 pour la troisième fois la valeur de N =3

en génie civil on représente la poutre par le schéma statique suivant :


La poutre contient plusieurs travée, la listview contient la longueur de chaque travée en mètre
par exemple quand je tape dans la TextBox1 la valeur 5 m et je clique sur le Bouton1, la valeur 5 est ajouté à la ListView et en même temps un dessin s'affiche dans la PictureBox1 montrant la première Travée de longueur 5 m :

quand je tape la valeur 4.3 m et je clique sur le Bouton1, la valeur 4.3 est ajouté à la ListView et en même temps un dessin s'affiche dans la PictureBox1 (qui est la suite de dessin précédent) montrant la 1re et la 2eme Travée :

ainsi de suite
j'espère que j'ai bien expliqué
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 28 févr. 2017 à 23:21
Bonsoir
Je ferais le nécessaire demain pour la suppression d'une travée .
Cela a occupé mon après-midi de retraité
Si tu vois des améliorations ou idées fais-moi en part
A plus et ravi que cela te plaise
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 1 mars 2017 à 00:26
La suppression est possible sur la mise à jour du projet :http://codes-sources.commentcamarche.net/source/101850-visualisation-poutres-avec-travees-en-genie-civil
A plus et bonne nuit
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 1 mars 2017 à 08:36
Bonjour Vb95,
c'est parfait
merci pour ta précieuse aide
A plus
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 1 mars 2017 à 14:45
De rien !
Je me suis bien amusé .
J'ai encore fait une mise à jour ( le code est plus concis et expliqué) :http://codes-sources.commentcamarche.net/source/101850-visualisation-poutres-avec-travees-en-genie-civil
A plus et bon courage
Je t'envoie la facture par l'intermédiaire du site lol !
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 1 mars 2017 à 16:13
C'est encore moi Karine.code
Dans ton code d'origine tu ne voyais pas les triangles des appuis des travées .
Ta PictureBox était-elle assez haute ? Car si elle est de la même hauteur que la longueur des flèches verticales les triangles sont invisibles
C'est la seule raison possible à mon avis car le code servant à dessiner tes triangles est correct ( j'ai pris le même de base aussi )
Commenter la réponse de Karin.code
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 1 mars 2017 à 19:35
0
Utile
Bonsoir Vb95
non je ne crois pas que les Triangles sont masqués car hauteur de l'image est 400 Pixels et il reste beaucoup d'espace vide au-dessous du schéma

je ne veux pas abuser de ta gentillesse. J'ai pris beaucoup de ton temps (tu as fait presque tout le travail à ma place en fait tu as fait tout le travail à ma place), ça m'a pris toute la journée mais j'arrive pas à trouver où se situe mon erreur, tu vas peut-être dire que ce n'est pas pratique au que ce n'est pas utile mais je préfère que le tableau soit horizontal au lieu qu'il soit vertical comme le montre l'image plus plus haut
j'ai essayé de changer juste quelques parties sur le projet que tu m'as si gentiment Codé.
j'ai 2 problèmes, le premier est quand je modifie une valeur
par exemple j'entre 3 valeurs, je modifie la 2eme valeur et quand j'essaie d'entrer une 4eme valeur (je tape dans un textbox "ZoneSaisie" par exemple la valeur 9) et je clique sur la touche entrée la valeur 9 s'efface mais elle ne s'affiche pas dans le tableau jusqu'à ce que je la tape une deuxième fois, alors là elle s'affiche enfin dans le tableau même chose pour supprimer une valeur
par contre il y a pas de problème quand j'efface tout le temps


Voici le Projet :
http://www.cjoint.com/c/GCbsIQoPj2O
Commenter la réponse de Karin.code
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - Modifié par vb95 le 2/03/2017 à 01:59
0
Utile
3
Salut Karine
Je me suis encore bien amusé grâce à toi . Mais cela n'a pas été de la tarte !



comme tu vois sur l'image j'ai respecté ta disposition
- Le bouton "Modifier" n'est plus là car inutile
- la zone Saisie en haut sert à entrer des nouvelles travées au fur et à mesure
- la combobox te permet de sélectionner une travée par son numéro et sa valeur en mètre est dans la zone de modification
- une fois là tu peux supprimer la travée
- tu peux aussi modifier la valeur en mètre de cette travée dans la zone de modification . Une fois la touche Entrée tapée ( ce qui valide la zone de texte) les 2 boutons "Confirmer" et "Annuler" cette modification sont opérationnels .
Mais il faut dire que la listview n'est pas utilisée de manière normale ( on y met d'habitude une seule information par ligne : on travaille d'habitude au niveau de la ligne et non pas au niveau de la colonne)
Pour le projet toujours au même endroit : :http://codes-sources.commentcamarche.net/source/101850-visualisation-poutres-avec-travees-en-genie-civil
La facture va être salée lol !
A +

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 2 mars 2017 à 09:30
Salut Vb95,
Merci infiniment pour ton aide
pour la facture tu peux la mettre dans la liste d'attente car je ne t'ai pas encore payé les factures précédentes lol
A+
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 2 mars 2017 à 16:05
Vu que tu es une bonne cliente je te ferais un prix d'ami !
J'ai fait quelques modifications pour avoir un code plus clair et une meilleure gestion au niveau de la Combobox .
Toujours au même endroit : http://codes-sources.commentcamarche.net/source/101850-visualisation-poutres-avec-travees-en-genie-civil
Au plaisir
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 2 mars 2017 à 22:10
Bonsoir
C'est vrais, c'est plus claire
Merci beaucoup Vb95
A +
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.