HBITMAP *位图到.net位图

本文关键字:位图 net HBITMAP | 更新日期: 2023-09-27 18:11:45

我有一个Dll和它的头文件,我正试图在c++中创建一个COM包装器在c#中使用。
对于大多数函数来说,它非常简单,因为它们返回的是intstring

我在头文件中有这个结构体。

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。使用bitmap.fromHbitmap

HBITMAP *位图到.net位图

参数应为out IntPtr

然后你可以创建一个额外的函数,它将调用GetBMP,然后调用Bitmap.FromHbitmap返回一个位图。这样的函数必须DeleteObject原来的hbitmap

你可以试试System.IntPtr.