1

(BinaryFormatterを介して)シリアル化しようとしているvaluetypeオブジェクトがありますが、このオブジェクト内に3つのビットマップがあり、オブジェクトをシリアル化すると「一般的なgdi +例外」がスローされます(まじめな話ではありませんが、それは例外です)。

これらのビットマップをファイルにシリアル化することが不可欠です(相対的な場所を保存し、シリアル化されたオブジェクトの残りの部分と一緒に画像を送信するのではなく)。

オブジェクトは次のようになります。

[Serializable]
public struct MyObject
{
  public String whatever;
  // ...
  public Bitmap img1;
  public Bitmap img2;
}

そして私はそれを次のようにシリアル化します:

BinaryFormatter bFormatter = new BinaryFormatter();
fs = new FileStream(m_ContractFolder + filename + ".xtn", FileMode.OpenOrCreate);

bFormatter.Serialize(fs, contract);

私はグーグルで検索しましたが、私が見つけたもののほとんどはすべてxmlserializationです(この状況では理想的ではありません)。他に何をすべきかわかりません。

4

1 に答える 1

0

画像のクローン作成とサムネイル作成の際に、過去に似たようなことがありました。残念ながら数年が経ち、詳細は覚えていませんが、ファイル ハンドルと、その Image オブジェクトのソースとしてそれらを保持する GDI に関係していました。

実際のソース ストリームではなく、MemoryStream から画像を読み込むことで問題を解決しました。画像がファイルにある場合は、まずファイルの内容を MemoryStream に読み込みます。次に、MemoryStream からイメージを読み込みます。

于 2009-02-03T02:49:18.257 に答える