Question

Je suis l'aide de Windows Phone.Le problème est qu'il n'a pas l' Color.FromName il a plutôt l' Color.FromArgb.

J'ai un rectangle et je veux mettre sa couleur de remplissage en fonction de ce que la couleur est à partir d'un fichier qui est lu.par exempleJ'ai enregistré "Rouge" dans un fichier appelé les couleurs.J'ai lu et que je les envoie à une chaîne de caractères appelée LpColor maintenant, qui va contenir le texte "Rouge" à l'intérieur.

Maintenant, comment dois-je utiliser LpColor dans Rectangle.Fill = ....Faire Un Rectangle.Fill = LpColor ne fonctionnera pas.

C'est le code qui me permet de lire mes fichiers:

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}
Était-ce utile?

La solution

Si vous devez l'enregistrer en tant que chaîne de caractères (Rouge), vous pouvez écrire un convertisseur méthode qui permettra de convertir la chaîne de retour à une couleur.En fonction du nombre de couleurs que vous avez, de la complexité de la méthode de croître, de sorte que vous voudrez peut-être repenser enregistrement de la couleur en tant que nom - peut-être que vous pouvez enregistrer comme une combinaison de l'ARGB et le nom?Utiliser une classe pour tenir cette info?Il y en a beaucoup d'options.

De toute façon, votre convertisseur simple serait de faire quelque chose comme ceci:

private SolidColorBrush ColorNameToBrush(string colorName)
{
    Color color = Color.FromArgb(0,0,0,0);
    if (colorName == "Red")
    {
        color = new Color() { R = 255, G = 0, B = 0};
    }
    else if ...
    {

    }

    return new SolidColorBrush(color);
}

À l'aide de l'instruction switch au lieu de sans fin si-sinon-si peut-être une meilleure idée si vous avez beaucoup de chaînes de caractères, si.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top