2009-02-02 2 views
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이다 (적합하지 이러한 상황에서). 내가 뭘해야할지 모르겠다.

+0

"공용 클래스 구조체"- 그게 뭡니까? –

+0

내 잘못입니다. 오식; 그것은 구조체입니다. 나는 그것을 고쳤다. –

답변

0

이미지를 복제하고 미리보기 이미지를 만들 때 비슷한 점이 발생했습니다. 불행히도 그것은 몇 년이 지났지 만 세부 사항은 기억하지 못합니다. 그러나 파일 핸들과 GDI를 이미지 객체의 소스로 유지해야했습니다.

실제 소스 스트림이 아닌 MemoryStream에서 이미지를로드하여 문제를 해결했습니다. 이미지가 파일에 있으면 먼저 파일의 내용을 MemoryStream에로드하십시오. 그런 다음 MemoryStream에서 이미지를로드하십시오.