2011-06-29 39 views
1

我想使用C++託管項目中的.Net圖形功能。我想從inmemory C++字節數組中創建Windows.Drawing.Image(基於MemoryStream)。我如何編組字節數組從託管C++到c#

我怎樣才能讓這片代碼工作:

System::IO::Stream^ ms = gcnew System::IO::MemoryStream(); 
BYTE buf[1024 * 8]; // C++ 
int size; // C++ 
... 
ms->Write(&buf, 0, size) 

預先感謝您!

回答

1

你可以做這樣的事情:

int size = 1024; 

BYTE buf[1024]; 

// unmanaged buffer 
System::IntPtr intPtr = System::IntPtr(buf); 

// managed buffer 
array<unsigned char>^ managedBuf = gcnew array<unsigned char>(size); 

{ 
    // write things to buf[] 
} 

// copy unmanaged buffer to managed buffer 
Marshal::Copy(intPtr, managedBuf, 0, size); 

System::IO::Stream^ ms = gcnew System::IO::MemoryStream(); 

ms->Write(managedBuf, 0, size); 
相關問題