Rambocop31
Messages postés2Date d'inscriptionmardi 19 février 2008StatutMembreDernière intervention 3 avril 2008
-
2 avril 2008 à 12:19
Rambocop31
Messages postés2Date d'inscriptionmardi 19 février 2008StatutMembreDernière intervention 3 avril 2008
-
3 avril 2008 à 11:45
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
Rambocop31
Messages postés2Date d'inscriptionmardi 19 février 2008StatutMembreDernière intervention 3 avril 2008 3 avril 2008 à 11:45
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