2008-09-23 4 views
6

Usecase: Użytkownik dostosowuje czcionki do obiektu na powierzchni projektu, który muszę załadować/zapisać do mojego magazynu danych. To znaczy. ustawienia takie jak pogrubienie, kursywa, rozmiar, nazwa czcionki muszą być zachowane.Jak skutecznie utrzymywać obiekt czcionki .Net?

Czy istnieje jakiś łatwy (i niezawodny) mechanizm do konwersji/odczytu z reprezentacji ciągów obiektu czcionki (w takim przypadku potrzebowałbym tylko jednego atrybutu)? Czy też wiele właściwości w połączeniu z niestandardową logiką jest właściwą opcją?

Odpowiedz

10

Zastosowanie 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 

Jeśli chcesz użyć serializacji XML można tworzyć klasy Font owijkę, która będzie przechowywać niektóre podzbiór właściwości czcionki.

Uwaga (Gishu) - Nigdy nie należy uzyskać bezpośredniego dostępu do konwertera. Zamiast tego należy uzyskać dostęp do odpowiedniego konwertera za pomocą TypeDescriptor. Bardzo ważne :)

+0

świetne .. działa jak reklamowane. -.!. Dzięki aku Głosowanie ci bliżej do znaku 5K :) – Gishu

+0

cieszę Udało mi się pomóc, dziękuję za głosowanie :) – aku

+1

Myślę, że 'ConvertFromInvariantString()' powinien być używany jako odpowiednik 'Conv ertToInvariantString() '(zamiast' ConvertFromString() 'widzianego w powyższym przykładzie). – miroxlav

0

Jaki rodzaj magazynu danych jest potrzebny do utrzymania tego? Jeśli to tylko ustawienia użytkownika, które można zachować w pliku, można serializować obiekt czcionki do pliku ustawień w formacie binarnym lub xml (jeśli chcesz mieć możliwość bezpośredniej edycji pliku konfiguracyjnego). Przestrzenie nazw serializacji (System.Xml.Serialization i System.Runtime.Serialization) zapewniają wszystkie narzędzia do tego celu bez pisania niestandardowego kodu.

MSDN Site na serializacji XML: XML Serialization in the .Net Framework

[EDIT] Tak aparrently obiekt czcionka nie jest serialisable. oops :(Niestety.

+0

Obiekt czcionki nie jest możliwy do serializacji. – aku

0

W projekcie pracuję nad poszłam z wielu właściwości.

zapisać czcionkę do tabeli bazy danych przez wyrwanie jej nazwy, rozmiaru, stylu i urządzenie, a następnie utrzymują te wartości

Odtworzenie czcionkę na żądanie raz te wartości są retrived jest bardzo prosta