そのCOMオブジェクトを使用して、C ++ / COMライブラリに実装されたDIBを.NETクライアントに取得する方法

StackOverflow https://stackoverflow.com/questions/265967

  •  06-07-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

COM / OLEには、 IPicture (およびそのスクリプト対応バージョン IPictureDisp )。

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

.NETの土地に戻ると、 Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top