Article View: fj.lang.visualbasic
Article #615Re: [Q] 画像情報の配列化
From: Masaru Kumakawa
Date: Mon, 23 Feb 1998 00:00
Date: Mon, 23 Feb 1998 00:00
98 lines
3560 bytes
3560 bytes
こんにちは、熊川です。
> 私に、GetDIBitsとSetDIBitsの使用方法を教えていただけませんか?
> 私も画像の配列化を試みているのですが、なかなかうまくいきません。
参考になるかは解りませんが、コードを乗せておきます。
適当にちぎってはってください。
-- 定義部 --
Declare Function GetDIBits Lib "GDI32.DLL" _
(ByVal aHDC As Long, ByVal hBitmap As Long, _
ByVal nStartScan As Long, ByVal nNumScans As Long, _
lpBits As RGB, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Declare Function SetDIBits Lib "GDI32.DLL" _
(ByVal hdc As Long, ByVal hBitmap As Long, _
ByVal nStartScan As Long, ByVal nNumScans As Long, _
lpBits As RGB, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type
Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type
Type RGB
Red As Byte
Green As Byte
Blue As Byte
End Type
Global glHDC As Long
Global glBitmap As Long
Global glStartScan As Long
Global glNumScans As Long
Global glBits() As RGB
Global uBI As BITMAPINFO
Global glUsage As Long
Public Const DIB_RGB_COLORS = 0
Public Const DIB_PAL_COLORS = 1
Public Const BI_RGB = 0&
== 実行部 --
Dim lRtn As Long
Dim i As Long
' ScaleModeの変更
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
' 情報の定義
uBI.bmiHeader.biSize = 40
uBI.bmiHeader.biWidth = Picture1.ScaleWidth
uBI.bmiHeader.biHeight = Picture1.ScaleHeight
uBI.bmiHeader.biPlanes = 1
uBI.bmiHeader.biBitCount = 24
uBI.bmiHeader.biCompression = BI_RGB
uBI.bmiHeader.biSizeImage = _
((Picture1.Width + 3) \ 4) * 4 * Picture1.Height * 3
uBI.bmiHeader.biXPelsPerMeter = 0
uBI.bmiHeader.biYPelsPerMeter = 0
uBI.bmiHeader.biClrUsed = 0
uBI.bmiHeader.biClrImportant = 0
' 配列の再定義
ReDim glBits(uBI.bmiHeader.biSizeImage)
' 画像情報取り出し
lRtn = GetDIBits(Picture1.hdc, Picture1.Image, 0, _
Picture1.ScaleHeight, glBits(0), uBI, DIB_RGB_COLORS)
' ScaleModeを元に戻す
Picture1.ScaleMode = 1
Form1.ScaleMode = 1
' 画像情報を戻す
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
lRtn = SetDIBits(Picture2.hdc, Picture2.Image, 0, _
Picture2.Height, glBits(0), uBI, DIB_RGB_COLORS)
Picture2.Refresh
Technical Details
Message-ID:
<34F0D51A.D504437E@ny.airnet.ne.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<34CEF939.E314D879@ny.airnet.ne.jp> <6aoq58$kg8@rorty.mim.co.jp> <34D0344F.80BCE63A@ny.airnet.ne.jp> <01bd3f9b$5899d800$6501a8c0@edipsat>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 105c2e,5259737cb5fa9042 X-Google-Attributes: gid105c2e,public From: Masaru Kumakawa <hmn1@ny.airnet.ne.jp> Subject: Re: [Q] 画像情報の配列化 Date: 1998/02/23 Message-ID: <34F0D51A.D504437E@ny.airnet.ne.jp> X-Deja-AN: 327680462 Content-Transfer-Encoding: 7bit References: <34CEF939.E314D879@ny.airnet.ne.jp> <6aoq58$kg8@rorty.mim.co.jp> <34D0344F.80BCE63A@ny.airnet.ne.jp> <01bd3f9b$5899d800$6501a8c0@edipsat> Content-Type: text/plain; charset=iso-2022-jp Organization: AIRnet Mime-Version: 1.0 Newsgroups: fj.lang.visualbasic