惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
U
Unit 42
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
I
InfoQ
WordPress大学
WordPress大学
H
Help Net Security
D
Docker
B
Blog
腾讯CDC
A
About on SuperTechFans
Recent Announcements
Recent Announcements
雷峰网
雷峰网
有赞技术团队
有赞技术团队
C
Check Point Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - 油纸伞

假如m是奇数,且m>=3,证明m(m² -1)能被8整除 SharpSvn操作 -- 获取Commit节点列表 GetRelativePath获取相对路径 Dictionary(支持 XML 序列化),注意C#中原生的Dictionary类是无法进行Xml序列化的 Winform中Checkbox与其他集合列表类型之间进行关联 修复使用<code>XmlDocument</code>加载含有DOCTYPE的Xml时,加载后增加“[]”字符的错误 使用序列化来Clone对象 [转]PowerDesigner15生成Hibernate 用户自定义类型的隐式转换 Net3.5及以上版本INotifyPropertyChanged接口的友好用法 知识加油站 知识加油站 Top K算法详细解析 C#值类型和引用类型 Oracle分区技术 对Oracle表分区的一点认识 oracle创建分区表 数据库大表的优化:采用蔟表(clustered tables)及蔟索引(Clustered Index) 2008年.Net编程人员工具参照
Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xm...
油纸伞 · 2017-04-19 · via 博客园 - 油纸伞
 1     /// <summary>
 2     /// Image(支持 XML 序列化)
 3     /// </summary>
 4     [XmlRoot("XmlImage")]
 5     public class XmlImage : IXmlSerializable
 6     {
 7         public System.Drawing.Image Image { get; set; }
 8 
 9         #region 构造函数
10 
11         public XmlImage()
12         { }
13 
14         protected XmlImage(SerializationInfo info, StreamingContext context)
15         { }
16         #endregion 构造函数
17 
18         #region IXmlSerializable Members
19         public XmlSchema GetSchema() => null;
20 
21         /// <summary>
22         ///     从对象的 XML 表示形式生成该对象(反序列化)
23         /// </summary>
24         /// <param name="xr"></param>
25         public void ReadXml(XmlReader xr)
26         {
27             if (xr.IsEmptyElement)
28                 return;
29             xr.ReadToFollowing(nameof(XmlImage));
30             Image = FromBase64String(xr.ReadElementContentAsString());
31             xr.ReadEndElement();
32         }
33 
34         /// <summary>
35         ///     将对象转换为其 XML 表示形式(序列化)
36         /// </summary>
37         /// <param name="xw"></param>
38         public void WriteXml(XmlWriter xw)
39         {
40             xw.WriteStartElement(nameof(XmlImage));
41             xw.WriteValue(ToBase64String(Image, ImageFormat.Png));
42             xw.WriteEndElement();
43         }
44         #endregion IXmlSerializable Members
45 
46         private static string ToBase64String(System.Drawing.Image img, ImageFormat format)
47         {
48             if (img != null)
49             {
50                 using (var ms = new MemoryStream())
51                 {
52                     img.Save(ms, format);
53                     byte[] buffer = ms.ToArray();
54                     return Convert.ToBase64String(buffer);
55                 }
56             }
57             return string.Empty;
58         }
59 
60         private static System.Drawing.Image FromBase64String(string base64Str)
61         {
62             System.Drawing.Image img = null;
63             using (var ms = new MemoryStream())
64             {
65                 try
66                 {
67                     var buffer = Convert.FromBase64String(base64Str);
68                     ms.Write(buffer, 0, buffer.Length);
69                     img = System.Drawing.Image.FromStream(ms);
70                 }
71                 catch
72                 {
73                     // ignored
74                 }
75             }
76             return img;
77         }
78     }