• ベストアンサー

C#のピクチャボックスにCLIのHBITMAPを

C#のピクチャボックスにC++/CLIのHBITMAPを貼り付けたいです。 方法を教えてくれませんか? 今、考えている方法は以下ですが、中々難しいです。 1.C#側 BitmapからIntPtr型で hDC を取得  → C++/CLIに渡せない 2.C++/CLIでhDCにHBITMAPを貼り付け  →IntPtr型を定義できない・・・。 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

HBITMAPからSystem.Drawing.Bitmapを作る話なのになぜHDCが関係するのかわかりませんが……。 まず,HBITMAPからSystem.Drawing.Bitmapを作るには,System.Drawing.Image.FromHbitmapを使います。 http://msdn.microsoft.com/ja-jp/library/k061we7x.aspx で,HBITMAPはポインタ型なので,System.IntPtrへの変換はSystem.IntPtrのコンストラクタが利用可能です。 また,明示的なキャストでも変換ができます。 http://msdn.microsoft.com/ja-jp/library/z82h6h45.aspx http://msdn.microsoft.com/ja-jp/library/e4y9h1at.aspx 流れとしては,HBITMAP => IntPtr => Bitmapという変換を行い, あとはCLIの世界で処理を行えばよいです。

mindeyed
質問者

お礼

ようやく出来ました! C#も勉強中でして、unsafe設定などで定義できずにいたのですが、、、。 有難うございます!

mindeyed
質問者

補足

分かりやすい内容有難うございます。 C++/CLI側でIntPtrが使えません。 error C3861: 'IntPtr': 識別子が見つかりませんでした 何が悪いのでしょうか? (VC++経験者でして、C#とCLIを習得中でして、、)

その他の回答 (1)

回答No.2

> error C3861: 'IntPtr': 識別子が見つかりませんでした using namespace System; していますか。 または, System::IntPtrと書くかです。

関連するQ&A