タイトル : 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 |