Поиск пикселя черного цвета в PictureBox (VB6)
Формулировка задачи:
Что мне в код добавить чтобы он еще искал черный пиксел и если он найден выдавалось сообщени!
Не пойму как и куда впихнуть проверки IF DIB_EGB_COLOR =0
Листинг программы
- Option Explicit
- Private 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 Double
- biClrUsed As Double
- End Type
- Private Type BITMAPINFO
- bmiHeader As BITMAPINFOHEADER
- bmiColors As Long
- End Type
- Private Declare Function SetDIBitsToDevice Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
- Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC 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
- Const WW As Long = 1024, HH As Long = 768
- Dim FPS As Long
- Dim StrFPS As String
- Dim bi32BitInfo As BITMAPINFO
- Dim cBuf() As Long
- Private Sub Form_Load()
- Move Left, Top, Width - Screen.TwipsPerPixelX * (ScaleWidth - WW), Height - Screen.TwipsPerPixelY * (ScaleHeight - HH)
- pic.Move 0, 0, WW, HH
- Show
- ReDim cBuf(WW - 1, HH - 1) As Long
- With bi32BitInfo.bmiHeader
- .biBitCount = 32
- .biPlanes = 1
- .biSize = Len(bi32BitInfo.bmiHeader)
- .biWidth = WW
- .biHeight = -HH
- .biSizeImage = 4 * (WW * HH)
- End With
- While DoEvents
- Render
- FPS = FPS + 1
- Wend
- End Sub
- Private Sub Render()
- pic.Line (0, 0)-(WW, HH), 0, BF
- pic.CurrentX = 8
- pic.CurrentY = 8
- pic.Print StrFPS;
- GetDIBits hDC, pic.Image.Handle, 0, HH, cBuf(0, 0), bi32BitInfo, 0
- SetDIBitsToDevice hDC, 0, 0, WW, HH, 0, 0, 0, HH, cBuf(0, 0), bi32BitInfo, 0
- End Sub
- Private Sub Timer1_Timer()
- StrFPS = FPS
- FPS = 0
- End Sub
Решение задачи: «Поиск пикселя черного цвета в PictureBox (VB6)»
textual
Листинг программы
- Option Explicit
- Private Declare Function GetDIBits Lib "gdi32" (ByVal ahdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As Any, ByVal wUsage As Long) As Long
- Private Sub Form_Load()
- Dim pix() As Long
- Dim bi(11) As Long
- Dim pic As IPicture
- Dim s As Long
- Dim x As Long
- Dim y As Long
- Set pic = Image1.Picture
- bi(0) = 40
- GetDIBits Me.hdc, pic.Handle, 0, ScaleY(pic.Height, vbHimetric, vbPixels), ByVal 0&, bi(0), 0
- bi(4) = 0: bi(3) = &H200001
- ReDim pix(bi(1) - 1, bi(2) - 1)
- GetDIBits Me.hdc, pic.Handle, 0, bi(2), pix(0, 0), bi(0), 0
- For y = bi(2) - 1 To 0 Step -1: For x = 0 To bi(1) - 1
- If pix(x, y) = vbBlack Then Stop
- Next: Next
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д