2008-11-05 50 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表示。

相關問題