Frage

Ich verwende Windows Phone.Das Problem ist, dass es nicht hat Die Color.FromName Stattdessen hat es das Color.FromArgb.

Ich habe ein Rechteck und möchte seine Füllfarbe abhängig von der Farbe einer gelesenen Datei festlegen.z.B.Ich habe „Rot“ in einer Datei namens „Farben“ gespeichert.Ich lese das und sende es an eine Zeichenfolge namens LpColor Jetzt wird darin der Text „Rot“ angezeigt.

Wie verwende ich nun LpColor In Rectangle.Fill = ....Das Ausführen von „Rectangle.Fill = LpColor“ funktioniert nicht.

Dies ist der Code, wie ich meine Datei lese:

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}
War es hilfreich?

Lösung

Wenn Sie es als Zeichenfolge (Rot) speichern müssen, können Sie eine Konvertermethode schreiben, die die Zeichenfolge zurück in eine Farbe umwandelt.Je nachdem, wie viele Farben Sie haben, wird die Komplexität der Methode zunehmen. Vielleicht möchten Sie die Speicherung der Farbe als Namen noch einmal überdenken – vielleicht könnten Sie sie als Kombination aus ARGB und Namen speichern?Verwenden Sie eine Klasse, um diese Informationen zu speichern?Es gibt viele, viele Möglichkeiten.

Wie auch immer, Ihr einfacher Konverter würde so etwas tun:

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);
}

Die Verwendung der switch-Anweisung anstelle der endlosen if-else-if-Anweisung ist jedoch möglicherweise eine bessere Idee, wenn Sie viele Zeichenfolgen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top