我正在使用C#实现的Windows应用程序。其中一个要求是用户能够选择一组字体并将其保存到数据库中。我需要为字体存储的信息包括:
到目前为止,我将此信息存储为数据库中的单独字段。后来我从这个信息构建了Font对象。但是,我发现无法创建具有所有必需设置的新对象(例如,粗体和斜体字体)。
为了说明我做了这样的事情(请注意我使用EF,因此这些方法仅用于说明):
string font_name = GetFontNameFromDatabase();
string font_size = GetFontSizeFromDatabase();
...
Font f = new Font(font_name, font_size);
我的问题是是否有一种方便的方法在SLQ服务器数据库中存储字体对象。也许作为二元字段?
答案 0 :(得分:7)
您可以使用FontConverter
类来序列化和反序列化字体:
var fc = new FontConverter();
Font f1 = new Font("Times New Roman", 12);
var fontAsString = fc.ConvertToInvariantString(f1); // "Times New Roman, 12pt"
Font f2 = (Font)fc.ConvertFromInvariantString(fontAsString);
Console.WriteLine(f2.ToString()); // [Font: Name=Times New Roman, Size=12, ...]