Если нужно много перебора делать, то лучше сделай так.
Код Модуля:
- Public Type BITMAPINFOHEADER
- bmSize As Long
- bmWidth As Long
- bmHeight As Long
- bmPlanes As Integer
- bmBitCount As Integer
- bmCompression As Long
- bmSizeImage As Long
- bmXPelsPerMeter As Long
- bmYPelsPerMeter As Long
- bmClrUsed As Long
- bmClrImportant As Long
- End Type
- Public Type RGBTRIPLE
- Blue As Byte
- Green As Byte
- Red As Byte
- End Type
- Public Type BITMAPINFO
- bmHeader As BITMAPINFOHEADER
- bmColors(0 To 255) As RGBTRIPLE
- End Type
-
- Public Declare Function SetDIBits Lib "Gdi32.dll" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, ByRef lpBits As Any, ByRef lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
- Public Declare Function GetDIBits Lib "Gdi32.dll" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
- Public Declare Function BitBlt& Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long)
-
- Public ScreenW As Long
- Public ScreenH As Long
- Public BitmapInformation As BITMAPINFO
- Public temp() As RGBTRIPLE
Код формы.
Создай картинку на форме. Picture1
ScreenW = screen.width
ScreenH = screen.Height
With BitmapInformation.bmHeader
.bmSize = Len(BitmapInformation.bmHeader)
.bmBitCount = 24
.bmClrImportant = 0
.bmClrUsed = 0
.bmCompression = BI_RGB
.bmHeight = ScreenH
.bmWidth = ScreenW
.bmPlanes = 1
.bmSizeImage = 0
.bmXPelsPerMeter = 0
.bmYPelsPerMeter = 0
End With
BitBlt Form1.Picture1.hdc, 0, 0, ScreenW, ScreenH, GetDC(0), 0, 0, vbSrcCopy
GetDIBits Form1.Picture1.hdc, Form1.Picture1.Image, 0, ScreenH, temp(0, 0), BitmapInformation, DIB_RGB_COLORS
Все точки, в формате RGB будут у тебя в массиве temp(screenW-1,screenH-1)
Ответить
|