Afficher backcolor dans picturebox

Résolu
Signaler
Messages postés
2
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
3 avril 2008
-
Messages postés
2
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
3 avril 2008
-
bonjour
je désire afficher le backcolor (system.drawing.color) d'une picturebox en enlevant auparavant une éventuelle image (system.drawing.image) déjà affichée. Le problème c'est que l'image s'efface mais la couleur affichée est toujours du gris et ne récupère donc pas correctement la couleur sélectionnée. Je ne sais pas comment m'en sortir. Pour info je sérialise les chemins relatifs des images et les couleurs en XML après conversion en string...
Merci de m'aider.
Voici mon code:

Private Sub Button_Previsualisation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Previsualisation.Click
        If ListBox_Images.Items.Count > 0 Then
            If ListBox_Images.SelectedIndex() = -1 Then
                MessageBox.Show("Vous n'avez sélectionné aucune image dans la liste!", "Attention")
            Else
                ' On affiche la couleur sélectionnée
                If ListBox_Images.SelectedItem().ToString.StartsWith("Color [") Then
                    ' C'est ici que ca plante...
                    PictureBox_Ecran.ImageLocation = ""
                    PictureBox_Ecran.BackColor = Color.FromName(ListBox_Images.SelectedItem.ToString)
                Else
                    ' Affiche l'image redimensionnée dans le PictureBox_Ecran
                    PictureBox_Ecran.ImageLocation = ListBox_Images.SelectedItem.ToString
                End If
        End If
        Else
            ' On efface l'image pour afficher le BackColor
            PictureBox_Ecran.ImageLocation = ""
            MessageBox.Show("La liste des images est vide. Il est donc impossible de réaliser un aperçu!", "Erreur")
        End If
    End Sub

2 réponses

Messages postés
2
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
3 avril 2008

Merci dimitriusai pour ton aide...
En fait je me suis débrouillé en faisant un split de la couleur convertie en string (de la forme Color [nom_couleur] ou bien Color[A=valA, R=valR, G=valG, B=valB]) et je traite le résultat obtenu....

Et en plus ca marche nikel, que demander de plus...

Voici le code:
Private Sub Button_Previsualisation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Previsualisation.Click
        If ListBox_Images.Items.Count > 0 Then
            If ListBox_Images.SelectedIndex() = -1 Then
                MessageBox.Show("Vous n'avez sélectionné aucune image dans la liste!", "Attention")
            Else
                ' On affiche la couleur sélectionnée
                If ListBox_Images.SelectedItem().ToString.StartsWith("Color [A=") Then
                    ' Si la couleur est au format argb (car elle n'est pas une couleur standard)
                    PictureBox_Ecran.ImageLocation = ""
                    ' Je récupère dans le tableau les valeurs de A,R,G et B par un split ("explode" de PHP)
                    Dim couleurs As String() = Split(ListBox_Images.SelectedItem().ToString, ",")
                    Dim A As String = couleurs(0)
                    Dim R As String = couleurs(1)
                    Dim G As String = couleurs(2)
                    Dim B As String = couleurs(3)
                    ' Je formate correctement les valeurs de chaque couleur et les convertit en entier
                    A = CInt(couleurs(0).Substring(9))  ' On supprime le "Color [A=" au début du nom de la couleur
                    R = CInt(couleurs(1).Substring(3))
                    G = CInt(couleurs(2).Substring(3))
                    B = CInt(couleurs(3).Substring(3).Trim("]"))    ' Idem pour le dernier caractère, et on obtient la valeur de bleu
                    PictureBox_Ecran.BackColor = Color.FromArgb(A, R, G, B) ' Et enfin je change le BackColor
                Else
                    If ListBox_Images.SelectedItem().ToString.StartsWith("Color [") Then
                        ' Si la couleur a un format standard (ex: "red","yellow"...)
                        PictureBox_Ecran.ImageLocation = ""
                        PictureBox_Ecran.BackColor = Color.FromName(ListBox_Images.SelectedItem().ToString.Substring(7).Trim("]"))  ' On supprime le "Color [" au début du nom de la couleur et le "]" de la fin
                    Else
                        ' Affiche l'image redimensionnée dans le PictureBox_Ecran
                        PictureBox_Ecran.ImageLocation = ListBox_Images.SelectedItem.ToString
                    End If
                End If
            End If
        Else
            ' On efface l'image pour afficher le BackColor
            PictureBox_Ecran.ImageLocation = ""
            MessageBox.Show("La liste des images est vide. Il est donc impossible de réaliser un aperçu!", "Erreur")
        End If
    End Sub
Messages postés
76
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
7 mai 2009

Un refresh ne te serait pas utile ? après tout changement ?



PictureBox1.refresh()

J'ai déja eu le coup avec des button, des datagridview, etc !