用例:用户对设计图面上的对象进行字体自定义,我需要加载/保存到我的数据存储区。即像Bold,Italics,Size,Font Name这样的设置需要保留。
是否有一些简单(可靠)的机制来从字体对象的字符串表示转换/读回(在这种情况下,我只需要一个属性)?或者是多个属性与自定义逻辑相结合的正确选项?
答案 0 :(得分:10)
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属性的一些子集。
注意(Gishu) - 切勿直接访问类型转换器。而是使用TypeDescriptor访问适当的转换器。非常重要:)
答案 1 :(得分:0)
您需要使用哪种类型的数据存储来保留它?如果只是用户设置可以保存在文件中,您可以将字体对象序列化为二进制或xml中的设置文件(如果您希望能够直接编辑配置文件)。序列化命名空间(System.Xml.Serialization和System.Runtime.Serialization)提供了所有工具,无需编写自定义代码。
关于XML序列化的MSDN站点:XML Serialization in the .Net Framework
[编辑]因此,字体对象不是可序列化的。哎呀:(对不起。
答案 2 :(得分:0)
在我正在进行的项目中,我选择了多个属性。
我通过打破它的名称,大小,样式和单位将字体保存到数据库表中,然后保留这些值。
重新审核这些值后,按需重新创建字体非常容易。