2008年03月06日

VB6のhDCプロパティはVB.NET(VB2005)ではどうなる?

VB6でグラフィック関連のWindowsAPIを使うときは必ずと言ってよいほどコントロール(FormやPictureBox)のデバイスコンテキストであるhDCプロパティを指定する。

これをVB.NET(VB2005)で使おうとしてアップデートウィザードを使うと肝心のhDCが「'UPGRADE_ISSUE: Form プロパティ Form1.hdc はアップグレードされませんでした。」となり使えない。別件だが同じくWindowsAPIでよく使うウィンドウハンドル(.hWnd)は、.NET Frameworkでは(コントロール).Handleというプロパティになっており判りやすい。
いったいhDCはどうすれば指定できるのだ?と思い調べてみたところこんな具合になった。VB6との比較で紹介する。

例として起動したフォームの座標(x,y)地点の色(RGB値)を取得するGetPixel関数で説明する。
この関数の定義は以下の通り、最初の引数にhDCを渡す。
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

VB6:
Dim iro As Long
iro = GetPixel(Me.hdc, x, y) 'たったこれだけ。
 
VB.NET/VB2005:
Dim gp As Graphics = Me.CreateGraphics 'フォームのGraficsを作成
Dim hDC As IntPtr = gp.GetHdc() 'そのデバイスコンテキストを取得
Dim iro As Long = GetPixel(hDC, x, y) 'やっと使える


posted by なっちゃん at 19:56| 静岡 ☀| Comment(0) | TrackBack(0) | VB vs VB.NET | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。