Serialization de font

Résolu
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 13 mars 2009 à 17:44
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 14 mars 2009 à 23:52
Bonjour

J'utilise une classe de parametre pour definir des presentations

Il y en a +/- 30
J'utilise la petite methode ci dessous pour les sauver c'est evidemment tres simple

Malheureusement, ca ne marche pas avec des Font
Quelqu'un sait-il comment je pourrais embaler la serialization d'un font dans cette methode ?

Sans devoir tout refaire a la main ?

          // *******************************************************************************************
    private void SaveTemplate()
    {
      XmlSerializer xs;
      StreamWriter sw;
      string TemplateFile = "d:/tmp/xxx.xml";
      if (TemplateFile.Length <= 0)
      {
        return;
      }
      xs = new XmlSerializer(typeof(C_PrintSettings));
      using (sw = new StreamWriter(TemplateFile, false, Encoding.Default))
      {
        xs.Serialize(sw, Document.PrintSettings);
        sw.Close();
      }
    }

2 réponses

RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
14 mars 2009 à 23:28
hum si tu ne tiens vraiment pas a implementer IXmlSerializable et réécrire les methodes ReadXml et WriteXml, ou bien si tu ne veux pas avoir une classe "wrapper" pour le Font dans laquelle tu aurais des propriétés pour le familyname et font-size et une methode ToFont qui convertirait cela en Font alors essaye:

//ecriture
Font f = textBox1.Font; //ta font a toi, ici je recupere depuis un textbox pour pas m'embeter
string s1 = TypeDescriptor.GetConverter(f).ConvertToString(f);

Tu vas donc avoir comme propriete de ta classe une string pour ta font plutot qu'un type font directement.

//recupération
Font f2 = new Font((Font)TypeDescriptor.GetConverter(typeof(Font)).ConvertFromString(s1);

Lorsque tu vas vouloir utiliser ta font, tu devrais la convertir depuis ta string. bon ici c'est fait en brouillon, mais je pense que tu comprends le principe.
3
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
14 mars 2009 à 23:52
Merci RougailSaucisse

Finalement je suis passé par une classe Wrapper !
C'est finalement le plus souple a mon avis
0
Rejoignez-nous