Как эффективно сохранить объект шрифта .Net? - PullRequest
6 голосов
/ 23 сентября 2008

Usecase: пользователь настраивает шрифт для объекта в области дизайна, который мне нужно загрузить / сохранить в хранилище данных. То есть настройки, такие как полужирный, курсив, размер, имя шрифта должны быть сохранены.

Есть ли какой-нибудь простой (и надежный) механизм для преобразования / чтения из строкового представления объекта шрифта (в этом случае мне понадобится только один атрибут)? Или несколько свойств в сочетании с пользовательской логикой - правильный выбор?

Ответы [ 3 ]

10 голосов
/ 23 сентября 2008

Использование 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

Если вы хотите использовать сериализацию XML, вы можете создать оболочку класса Font, которая будет хранить некоторое подмножество свойств Font.

Примечание (Гишу) - Никогда не обращайтесь к преобразователю типов напрямую. Вместо этого получите доступ к соответствующему конвертеру с помощью TypeDescriptor. Очень важно:)

0 голосов
/ 23 сентября 2008

В проекте, над которым я работаю, я использовал несколько свойств.

Я сохраняю шрифт в таблице базы данных, выделяя его имя, размер, стиль и единицу, а затем сохраняю эти значения.

Воссоздание шрифта по требованию, когда эти значения получены, совсем несложно.

0 голосов
/ 23 сентября 2008

В каком типе хранилища данных вам необходимо это сохранить? Если в файле можно сохранить только пользовательские настройки, вы можете сериализовать объект шрифта в файл настроек в двоичном или в XML-формате (если вы хотите иметь возможность редактировать файл конфигурации напрямую). Пространства имен сериализации (System.Xml.Serialization и System.Runtime.Serialization) предоставляют все инструменты для этого без написания пользовательского кода.

Сайт MSDN по сериализации XML: Сериализация XML в .Net Framework

[EDIT] Таким образом, объект шрифта, по-видимому, не сериализуем. упс :( Извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...