6

ユースケース: ユーザーは、データストアにロード/保存する必要があるデザイン サーフェイス上のオブジェクトにフォントのカスタマイズを行います。つまり、太字、斜体、サイズ、フォント名などの設定は永続化する必要があります。

フォント オブジェクトの文字列表現から変換/読み取りを行うための簡単な (そして信頼できる) メカニズムはありますか (その場合、必要な属性は 1 つだけです)。または、複数のプロパティをカスタム ロジックと組み合わせるのが適切なオプションですか?

4

3 に答える 3

10

TypeConverterを使用します:

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クラスラッパーを作成できます。

注(ギス)-型変換器に直接アクセスしないでください。代わりに、TypeDescriptorを使用して適切なコンバーターにアクセスしてください。非常に重要です:)

于 2008-09-23T02:07:42.440 に答える
0

これを永続化するには、どのタイプのデータストアが必要ですか?ファイルに永続化できるのがユーザー設定だけの場合は、フォントオブジェクトをバイナリまたはxmlの設定ファイルにシリアル化できます(構成ファイルを直接編集できるようにする場合)。シリアル化名前空間(System.Xml.SerializationおよびSystem.Runtime.Serialization)は、カスタムコードを記述せずにこれを行うためのすべてのツールを提供します。

XMLシリアル化に関するMSDNサイト:.NetFrameworkでのXMLシリアル化

[編集]そのため、フォントオブジェクトはシリアル化できません。おっと、ごめんなさい。

于 2008-09-23T02:12:53.847 に答える
0

私が取り組んでいるプロジェクトでは、複数のプロパティを使用しました。

名前、サイズ、スタイル、単位を分割してフォントをデータベース テーブルに保存し、それらの値を永続化します。

これらの値が取得されたら、必要に応じてフォントを再作成するのは簡単です。

于 2008-09-23T02:59:22.300 に答える