0

DIB を返すメソッドを含む C++/ATL で実装された COM オブジェクトがあります。この COM オブジェクトを使用する .NET アプリケーションも作成しています。両方を書いているので、COM オブジェクトからこの DIB を返す最善の方法を自由に決めることができます。明確にするために、ネイティブ Windows ハンドルを DIB またはバイト配列に返すのが最善でしょうか、または Windows DIB を .NET Image オブジェクトに簡単に移行する他の方法はありますか? そして、その質問に関連して、これが返された DIB を取得したら、どうすればそれを .NET Image オブジェクトに入れることができますか?

4

2 に答える 2

2

COM / OLEには、 IPicture(およびそのスクリプト対応バージョンのIPictureDisp )と呼ばれるグラフィックイメージを表すための標準インターフェイスがあります。

COMは、これらのインターフェースの実装を提供します。OleCreatePictureIndirect()を呼び出すことで、ビルドすることができます。あなたはそれをあなたが持っているグラフィックでPICTDESC構造を渡すだけで、それはあなたにインターフェースを返します。そのインターフェイスを呼び出し元のプログラムに戻すことができるはずです。これにより、オブジェクトがVB6などの他のCOMクライアントと互換性を持つようになります。

.NETランドに戻ると、 Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()を使用してIPictureを画像に変換できます。

于 2008-11-05T20:28:53.720 に答える
1

CodeProjectの記事DIB to System.Bitmapをご覧ください。DIB からビットマップに変換するコードがあります。アイデアは、DIB が IntPtr を使用して表されるということです。

于 2008-11-05T18:09:24.843 に答える