🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.visualbasic
Article #615

Re: [Q] 画像情報の配列化

#615
From: Masaru Kumakawa
Date: Mon, 23 Feb 1998 00:00
98 lines
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-mail
References: <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