- ベストアンサー
C#のピクチャボックスにCLIのHBITMAPを
C#のピクチャボックスにC++/CLIのHBITMAPを貼り付けたいです。 方法を教えてくれませんか? 今、考えている方法は以下ですが、中々難しいです。 1.C#側 BitmapからIntPtr型で hDC を取得 → C++/CLIに渡せない 2.C++/CLIでhDCにHBITMAPを貼り付け →IntPtr型を定義できない・・・。 以上、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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の世界で処理を行えばよいです。
その他の回答 (1)
- Yune-Kichi
- ベストアンサー率74% (465/626)
回答No.2
> error C3861: 'IntPtr': 識別子が見つかりませんでした using namespace System; していますか。 または, System::IntPtrと書くかです。
お礼
ようやく出来ました! C#も勉強中でして、unsafe設定などで定義できずにいたのですが、、、。 有難うございます!
補足
分かりやすい内容有難うございます。 C++/CLI側でIntPtrが使えません。 error C3861: 'IntPtr': 識別子が見つかりませんでした 何が悪いのでしょうか? (VC++経験者でして、C#とCLIを習得中でして、、)