プロが教えるわが家の防犯対策術!

C#のピクチャボックスにC++/CLIのHBITMAPを貼り付けたいです。

方法を教えてくれませんか?

今、考えている方法は以下ですが、中々難しいです。

1.C#側 BitmapからIntPtr型で hDC を取得
 → C++/CLIに渡せない

2.C++/CLIでhDCにHBITMAPを貼り付け
 →IntPtr型を定義できない・・・。

以上、宜しくお願い致します。

A 回答 (2件)

> error C3861: 'IntPtr': 識別子が見つかりませんでした



using namespace System;
していますか。
または,
System::IntPtrと書くかです。
    • good
    • 0

HBITMAPからSystem.Drawing.Bitmapを作る話なのになぜHDCが関係するのかわかりませんが……。




まず,HBITMAPからSystem.Drawing.Bitmapを作るには,System.Drawing.Image.FromHbitmapを使います。
http://msdn.microsoft.com/ja-jp/library/k061we7x …

で,HBITMAPはポインタ型なので,System.IntPtrへの変換はSystem.IntPtrのコンストラクタが利用可能です。
また,明示的なキャストでも変換ができます。
http://msdn.microsoft.com/ja-jp/library/z82h6h45 …
http://msdn.microsoft.com/ja-jp/library/e4y9h1at …

流れとしては,HBITMAP => IntPtr => Bitmapという変換を行い,
あとはCLIの世界で処理を行えばよいです。

この回答への補足

分かりやすい内容有難うございます。

C++/CLI側でIntPtrが使えません。

error C3861: 'IntPtr': 識別子が見つかりませんでした

何が悪いのでしょうか?

(VC++経験者でして、C#とCLIを習得中でして、、)

補足日時:2014/08/08 11:45
    • good
    • 0
この回答へのお礼

ようやく出来ました!

C#も勉強中でして、unsafe設定などで定義できずにいたのですが、、、。

有難うございます!

お礼日時:2014/08/11 11:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!