掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DIBノメモリハンドルについて (ID:84595)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たこすさんアドバイスありがとうございます。 いろいろ試した結果、ようやくできました。 DIBが白黒で1ピクセル1ビットだったので MoveMemoryの際に指定するデータ長がおかしかったです。 下記のようなコードでできました。 Type BITMAPP AA_INFO As BITMAPINFOHEADER AA_MAP(1) As RGBQUAD End Type Sub BITMAP_RTN2() Dim R As Long, r2 As Long, R3 As Long, PNT As Long Dim rtn As Boolean Dim MST_AA As BITMAPP Dim bitmap_h As BITMAPINFOHEADER Dim PIC() As Byte '**DIBのハンドル取得(市販OCXのメソッド) R = Main.MdTOcr1.GetImageHandle() PNT = GlobalLock(R) '**BITMAPINFOへコピー MoveMemory MST_AA, PNT, Len(MST_AA) '**Picturboxの高さと幅を設定 Main.Picture2.Height = MST_AA.AA_INFO.biHeight * Screen.TwipsPerPixelX Main.Picture2.Width = MST_AA.AA_INFO.biWidth * Screen.TwipsPerPixelY '**ピクセルデータの取得エリアの再定義 ReDim PIC(MST_AA.AA_INFO.biWidth * MST_AA.AA_INFO.biHeight) '**ピクセルデータの取得(1ピクセル1ビットで表現しているので8(1byteは8Bit)で割る MoveMemory PIC(0), PNT + 48, CLng((MST_AA.AA_INFO.biWidth * MST_AA.AA_INFO.biHeight) / 8) '**PICTURBOXに表示 R3 = SetDIBitsToDevice(Main.Picture2.hdc, 0, 0, _ MST_AA.AA_INFO.biWidth, MST_AA.AA_INFO.biHeight, _ 0, 0, 0, MST_AA.AA_INFO.biHeight, _ PIC(0), MST_AA, 0) '**ポインタの開放 GlobalUnlock (R) '**JPEGに出力(PicturBoxをJPEGにする R = BMPtoJPG(App.Path & "\AAA.JPG", 90, False) End Sub PIC(0)の渡し方をByvalにすれば、ポインタで渡しても OKだとおもいます。 いろいろと、ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.