Что нового

Проверка цвета пискеля в битмапе, в нужной координате

xishnik

Новичок
Сообщения
51
Репутация
0
Всем доброго дня. Хочу написать бота на игру в фоновом режиме, почти все получается, осталось научится
проверять цвет пикселя в определённой координате из картинки.
Работаю с этой функцией:
Код:
Func _ScreenCapture_CaptureBackgrWnd($sFileName, $hWnd, $iWidth = -1, $iHeight = -1)
    Local $iOpt_WWD, $hActive, $aPos, $iH, $iW, $hDDC, $hCDC, $hBMP

    If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0)

    If Not BitAND(WinGetState($hWnd), 2) Then
        $iOpt_WWD = Opt("WinWaitDelay", 0)
        $hActive = WinGetHandle("[ACTIVE]")

        $aPos = WinGetPos($hWnd)
        WinMove($hWnd, "", -1500, -1500)
        WinSetState($hWnd, "", @SW_SHOW)
        WinActivate($hActive)
        WinWaitActive($hActive)

        Opt("WinWaitDelay", $iOpt_WWD)
    ElseIf BitAND(WinGetState($hWnd), 16) Then
        $iOpt_WWD = Opt("WinWaitDelay", 0)
        $hActive = WinGetHandle("[ACTIVE]")

        WinSetState($hWnd, "", @SW_RESTORE)
        WinActivate($hActive)
        WinWaitActive($hActive)

        Opt("WinWaitDelay", $iOpt_WWD)
    EndIf

    If $iWidth = -1 Then $iWidth = _WinAPI_GetWindowWidth($hWnd)
    If $iHeight = -1 Then $iHeight = _WinAPI_GetWindowHeight($hWnd)

    $hDDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDDC)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iWidth, $iHeight)
    _WinAPI_SelectObject($hCDC, $hBMP)

    DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "hwnd", $hCDC, "int", 0)
    _WinAPI_BitBlt($hCDC, 0, 0, $iW, $iH, $hDDC, 0, 0, 0x00330008)

    _WinAPI_ReleaseDC($hWnd, $hDDC)
    _WinAPI_DeleteDC($hCDC)

    If IsArray($aPos) Then
        WinMove($hWnd, "", $aPos[0], $aPos[1])
        WinSetState($hWnd, "", @SW_HIDE)
    ElseIf IsHWnd($hActive) Then
        WinSetState($hWnd, "", @SW_MINIMIZE)
    EndIf

    If $sFileName = "" Then Return $hBMP
    _ScreenCapture_SaveImage($sFileName, $hBMP, True)
EndFunc

Если я указываю имя файла то она мне сохраняет картинку. Она её сохраняет даже в том случае если окно за пределами экрана, или поверх окна открыто другое приложение, что даёт мне возможность создать бота в фоновом режиме.
Если я не укажу имя файла, то функция мне просто вернет $hBmp.
Как в нем искать по координатам цвет пикселя?
Хотелось бы функцию, в которой можно было бы вписать $hBmp и координаты, а она мне цвет, может такая уже существует?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Английская справка (та что вызывается в SciTE по F1) описывает функцию
_GDIPlus_BitmapGetPixel
с примером.
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
C2H5OH сказал(а):
Английская справка (та что вызывается в SciTE по F1) описывает функцию
_GDIPlus_BitmapGetPixel
с примером.
Спасибо, разобрался. Нашёл в русской справке
http://autoit-script.ru/autoit3_docs/ARC_Curve_Black/userfunctions/_GDIPlus_BitmapGetPixel.htm
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Или вот альтернативный вариант
http://autoit-script.ru/index.php?topic=19715.msg117646#msg117646
 
Верх