我有一个Dll和它的头文件,并且试图在C ++中创建一个COM包装器以在C#中使用。
对于大多数函数而言,这非常简单,因为它们返回了int
或string
。
我在头文件中有此结构。
virtual HRESULT STDMETHODCALLTYPE GetBMP(
int Width,
int Height,
HBITMAP *Bitmap) = 0;
我的问题是,由于我与C ++脱节,所以我不知道如何将
HBITMAP
转换为更适合.net风格的内容在此先感谢您,如果写了愚蠢的东西请原谅
更新:
我尝试过这样的事情:
HBITMAP GetBMP(int Width, int Height)
{
HBITMAP bm = 0;
m_piHelper->GetBMP(Width,Height,&bm);
return bm ;
}
问题显然是在c#之后,如何从'HBITMAP __ *'转换为'System.IntPtr以与bitmap.fromHbitmap一起使用
最佳答案
参数应为out IntPtr
。
然后,您可以创建一个附加函数,该函数将调用GetBMP
,然后调用Bitmap.FromHbitmap
以返回位图。然后,此类功能必须DeleteObject
原始hbitmap
。
关于c# - HBITMAP *位图到.net位图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16321230/