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

有帮助吗?

解决方案

COM / OLE有一个标准界面,用于表示名为 IPicture (及其脚本友好版本 IPictureDisp )。

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

回到.NET版本,您可以使用 Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top