tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル GetDIbitsの使用方法について
投稿日: 2014/03/09(Sun) 19:51
投稿者還暦手習い
ディスクトップの特定エリアのピクセル単位の色情報を取得したいと
思っています。最終的にはVBAでの利用を意識していますので、VBAで
は利用できないPictuteBoxは避けて、Frameを介した方法で挑戦して
います。
@ディスクトップの任意のエリアをFrame1にBitBltで表示する。
AFrame1に表示された画像をGetpixelでピクセル単位の情報を配列変
 数に代入する。

@Aは完成したのですが任意の範囲の大きさによってはBitBltはかな
り遅く実用的ではありませんでした。

そこで見つけたのがGetDIbitsですが、PictuteBoxでは問題なく動作し
ますがFrame1では配列変数に代入できません。

具体的には
'ビットマップ作成
    hbm = CreateCompatibleBitmap(Frame1DC, 200, 200)
    Debug.Print hbm   '←数値がPrintされる OK?

'空のビットマップをセット
    ohbm = SelectObject(Frame1DC, hbm)
    Debug.Print ohbm  '← 0 がPrintされる = Error?

'配列の再宣言
    ReDim pixel(200, 200) As Long

'色を取得,Pixel配列には画像の色情報を代入
    GetDIBits Frame1DC, ohbm, 0, 200, pixel(0, 0), bmpinfo, 0

Frameの代わりにPictureBoxを使用するとうまくいきますが
VBAでの使用ができません。
SelectObjectを理解せず見よう見まねで利用させてもらって
るのが、なぜ?がわからない原因だとは思いますが、よろし
くご指導お願いいたします。

環境:WndowsXP SP3 VB6

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。