Поиск пикселя черного цвета в PictureBox (VB6)

Узнай цену своей работы

Формулировка задачи:

Что мне в код добавить чтобы он еще искал черный пиксел и если он найден выдавалось сообщени! Не пойму как и куда впихнуть проверки IF DIB_EGB_COLOR =0
Листинг программы
  1. Option Explicit
  2. Private Type BITMAPINFOHEADER
  3. biSize As Long
  4. biWidth As Long
  5. biHeight As Long
  6. biPlanes As Integer
  7. biBitCount As Integer
  8. biCompression As Long
  9. biSizeImage As Long
  10. biXPelsPerMeter As Double
  11. biClrUsed As Double
  12. End Type
  13. Private Type BITMAPINFO
  14. bmiHeader As BITMAPINFOHEADER
  15. bmiColors As Long
  16. End Type
  17. 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
  18. 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
  19. Const WW As Long = 1024, HH As Long = 768
  20. Dim FPS As Long
  21. Dim StrFPS As String
  22. Dim bi32BitInfo As BITMAPINFO
  23. Dim cBuf() As Long
  24. Private Sub Form_Load()
  25. Move Left, Top, Width - Screen.TwipsPerPixelX * (ScaleWidth - WW), Height - Screen.TwipsPerPixelY * (ScaleHeight - HH)
  26. pic.Move 0, 0, WW, HH
  27. Show
  28. ReDim cBuf(WW - 1, HH - 1) As Long
  29. With bi32BitInfo.bmiHeader
  30. .biBitCount = 32
  31. .biPlanes = 1
  32. .biSize = Len(bi32BitInfo.bmiHeader)
  33. .biWidth = WW
  34. .biHeight = -HH
  35. .biSizeImage = 4 * (WW * HH)
  36. End With
  37. While DoEvents
  38. Render
  39. FPS = FPS + 1
  40. Wend
  41. End Sub
  42. Private Sub Render()
  43. pic.Line (0, 0)-(WW, HH), 0, BF
  44. pic.CurrentX = 8
  45. pic.CurrentY = 8
  46. pic.Print StrFPS;
  47. GetDIBits hDC, pic.Image.Handle, 0, HH, cBuf(0, 0), bi32BitInfo, 0
  48. SetDIBitsToDevice hDC, 0, 0, WW, HH, 0, 0, 0, HH, cBuf(0, 0), bi32BitInfo, 0
  49. End Sub
  50. Private Sub Timer1_Timer()
  51. StrFPS = FPS
  52. FPS = 0
  53. End Sub

Решение задачи: «Поиск пикселя черного цвета в PictureBox (VB6)»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. 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
  4.  
  5. Private Sub Form_Load()
  6.     Dim pix()       As Long
  7.     Dim bi(11)      As Long
  8.     Dim pic         As IPicture
  9.     Dim s           As Long
  10.     Dim x           As Long
  11.     Dim y           As Long
  12.    
  13.     Set pic = Image1.Picture
  14.  
  15.     bi(0) = 40
  16.     GetDIBits Me.hdc, pic.Handle, 0, ScaleY(pic.Height, vbHimetric, vbPixels), ByVal 0&, bi(0), 0
  17.     bi(4) = 0: bi(3) = &H200001
  18.  
  19.     ReDim pix(bi(1) - 1, bi(2) - 1)
  20.  
  21.     GetDIBits Me.hdc, pic.Handle, 0, bi(2), pix(0, 0), bi(0), 0
  22.    
  23.     For y = bi(2) - 1 To 0 Step -1: For x = 0 To bi(1) - 1
  24.         If pix(x, y) = vbBlack Then Stop
  25.     Next: Next
  26.  
  27. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы