j'ai deja été confronté à ce probleme !
voici la solution mise en oeuvre pour palier à ça:
Code :
- public struct XmlFont
- {
- public string FontFamily;
- public System.Drawing.GraphicsUnit GraphicsUnit;
- public float Size;
- public System.Drawing.FontStyle Style;
- public XmlFont(System.Drawing.Font f)
- {
- FontFamily = f.FontFamily.Name;
- GraphicsUnit = f.Unit;
- Size = f.Size;
- Style = f.Style;
- }
- public System.Drawing.Font ToFont()
- {
- return new System.Drawing.Font(FontFamily, Size, Style,
- GraphicsUnit);
- }
- }
|
puis, pour l'utiliser :
Serialisation (puis passage en paramètre a une procédure stockée ici):
Code :
- System.IO.Stream toCopy = new System.IO.MemoryStream();
- XmlFont FontToSerialize = new XmlFont(this.CustomFont);
- XmlSerializer ttt = new XmlSerializer(typeof(XmlFont));
- ttt.Serialize(toCopy, FontToSerialize);
- toCopy.Flush();
- toCopy.Position = 0;
- System.IO.TextReader toRead =(System.IO.TextReader) new System.IO.StreamReader( toCopy);
- command.Parameters.Add("@Font",SqlDbType.Text).Value =toRead.ReadToEnd();
|
puis la déserialisation (obtenue d'un Datarow) :
Code :
- System.IO.Stream toCopy = new System.IO.MemoryStream();
- System.IO.TextWriter toWrite =(System.IO.TextWriter) new System.IO.StreamWriter( toCopy);
- toWrite.Write(row["CUSTOMFONT"]);
- toWrite.Flush();
- toCopy.Position = 0;
- XmlSerializer MiniSerializer = new XmlSerializer(typeof(XmlFont));
- XmlFont FontToSerialize = (XmlFont) MiniSerializer.Deserialize(toCopy);
- this.CustomFont= FontToSerialize.ToFont();
|