Вопрос

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

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

Это было полезно?

Решение

Использование Преобразователь типов:

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, вы можете создать оболочку класса шрифта, которая будет хранить некоторое подмножество свойств шрифта.

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

Другие советы

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

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

Воссоздать шрифт по требованию после восстановления этих значений несложно.

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

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

[РЕДАКТИРОВАТЬ] Итак, в настоящее время объект font не является сериализуемым.упс : ( Извините.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top