0

我们有一个用 C++/ATL 实现的 COM 对象,其中包括一个返回 DIB 的方法。我们还在编写一个将使用该 COM 对象的 .NET 应用程序。由于我们同时编写了两者,我们可以自由决定如何最好地从 COM 对象返回此 DIB。澄清一下,最好将本机 Windows 句柄返回到 DIB 或字节数组,还是有其他方法可以轻松地将 Windows DIB 转换为 .NET Image 对象?而且,与那个问题相关:一旦我得到了这个返回的 DIB,我怎么能把它变成一个 .NET Image 对象?

4

2 回答 2

2

COM/OLE 有一个用于表示图形图像的标准接口,称为IPicture(及其脚本友好版本IPictureDisp)。

COM 为您提供了这些接口的实现。您可以通过调用OleCreatePictureIndirect()来为您构建一个。您只需将PICTDESC 结构与您所拥有的图形一起交给它,它就会为您返回一个界面。您应该能够将该接口交还给调用程序。这也将使您的对象与其他 COM 客户端(如 VB6)兼容。

回到 .NET 领域,您可以使用Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()将 IPicture 转换为图像。

于 2008-11-05T20:28:53.720 回答
1

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

于 2008-11-05T18:09:24.843 回答