Frage

Usecase: Der Benutzer macht Schriftart Anpassungen auf ein Objekt auf der Entwurfsoberfläche, die ich laden müssen / zu meinem Datenspeicher speichern. D. h Einstellungen wie Fett, Kursiv, Größe, Schriftart müssen beibehalten.

Gibt es einen einfachen (und zuverlässig) Mechanismus zur Umwandlung / Rücklesen aus einer String-Darstellung des Font-Objekts (in diesem Fall würde ich brauche nur ein Attribut)? Oder mehr Eigenschaften die richtige Option mit benutzerdefinierter Logik kombiniert?

War es hilfreich?

Lösung

Verwenden Sie Typeconverter :

Font font = new Font("Arial", 12, GraphicsUnit.Pixel);

TypeConverter converter = TypeDescriptor.GetConverter(typeof (Font));

string fontStr = converter.ConvertToInvariantString(font);

Font font2 = (Font) converter.ConvertFromString(fontStr);

Console.WriteLine(font.Name == font2.Name); // prints True

Wenn Sie die XML-Serialisierung verwenden möchten, können Sie Font-Klasse-Wrapper erstellen, die eine gewisse Teilmenge von Font-Eigenschaften gespeichert werden.

Hinweis (Gishu) - Noch nie direkt einen Typkonverter zugreifen. Stattdessen greifen die entsprechenden Konverter von TypeDescriptor verwenden. Sehr wichtig:)

Andere Tipps

Im Projekt arbeite ich auf, ging ich mit den vielfältigen Eigenschaften.

speichere ich die Schriftart in einer Datenbanktabelle durch Ausbrechen der Name, Größe, Stil und Einheit und bleiben dann diese Werte.

auf Nachfrage die Schrift Recreating einmal diese Werte retrived sind, ist ein Kinderspiel.

Welche Art von Datenspeicher benötigen Sie, diese bestehen in? Wenn es nur Benutzereinstellungen, die in einer Datei beibehalten werden können Sie entweder das Font-Objekt zu einer Einstellungsdatei serialise könnten im Binär- oder XML (wenn Sie die Konfigurationsdatei direkt bearbeiten können, möchten). Die Serialisierung Namespaces (System.Xml.Serialization und System.Runtime.Serialization) bieten alle Werkzeuge, um dies zu tun, ohne benutzerdefinierten Code zu schreiben.

MSDN-Site auf XML-Serialisierung: XML-Serialisierung in .NET Framework

[EDIT] So aparrently das Font-Objekt ist nicht serialisable. oops :( Leider.

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