2008-11-05 47 views
0

我们有一个使用C++/ATL实现的COM对象,其中包含一个将返回DIB的方法。我们还在编写一个将使用此COM对象的.NET应用程序。既然我们正在编写这两个文件,我们可以自由决定如何最好地从COM对象返回这个DIB。为了澄清,最好是将本机窗口句柄返回给DIB或字节数组,还是有其他方法可以轻松将Windows DIB转换为.NET Image对象?并且,与这个问题有关:一旦我有了这个返回的DIB,我怎么能把它变成一个.NET Image对象?如何使用COM对象将在C++/COM库中实现的DIB转换为.NET客户端

回答

2

COM/OLE具有用于表示称为IPicture(及其易于使用脚本的版本IPictureDisp)的图形图像的标准接口。

COM为您提供了这些接口的实现。你可以通过拨打OleCreatePictureIndirect()来获得它。您只需将它带有您的图形PICTDESC structure,它会为您提供一个界面。您应该能够将该接口交给调用程序。这也将使您的对象与其他COM客户端如VB6兼容。

回到.NET土地,您可以使用Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()将IPicture变成图像。

1

看看CodeProject上的文章DIB to System.Bitmap。它具有将代码从DIB转换为位图的代码。这个想法是,DIB使用IntPtr表示。

相关问题