WinAPI GetPixel() - чем заменить? - Вопросы и ответы, обсуждения - Ваши вопросы по ASM/WinAPI только в данном разделе
20.02.2011, 20:56
#1
Пехотинец
Регистрация: 13.01.2011
Сообщений: 68
Популярность: 419
Сказал(а) спасибо: 20
Поблагодарили 140 раз(а) в 18 сообщениях
WinAPI GetPixel() - чем заменить?
Всем привет!
Использую GetPixel() для определения цвета пикселя по указанным координатам, но GetPixel() - очень тормознутая функция,
- есть ли алгоритм определения цвета пикселя без использования GetPixel()?
- или алгоритм поиска пикселя с указанным цветом в определённой области экрана?
20.02.2011, 21:12
#2
Разведчик
Регистрация: 02.02.2011
Сообщений: 18
Популярность: 229
Сказал(а) спасибо: 5
Поблагодарили 81 раз(а) в 52 сообщениях
Re: WinAPI GetPixel() - чем заменить?
Показывает цвет в любой точке любого окна если ее(точку) видно глазами
Код:
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#Include <date.au3>
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
;Opt("PixelCoordMode",2)
Opt("WinTitleMatchMode",1)
Opt("WinDetectHiddenText",1)
;Opt("MouseCoordMode",2)
Global $Title = "Bla-bla-bla",$klass = "MacromediaFlashPlayerActiveX2"
$hWnd = WinGetHandle($Title)
$Form1 = GUICreate("Координатор", 208, 278, 419, 182)
$Edit1 = GUICtrlCreateEdit("", 16, 8, 177, 233, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
;$koord = ControlGetPos( $titl, "", $klass) ; тут привязаться к окну и элементу окна
$pos = MouseGetPos() ; чтоб координаты стали относительные
;$pos[0] = координата Х вместо курсора
;$pos[1] = координата Y вместо курсора
;$pos[0] = $pos[0]+ $koord[0]
;$pos[1] = $pos[1] + $koord[1]
Sleep(10)
_MouseClickOnScreenCoords("Main", $hWnd, $pos[0], $pos[1], 1)
WEnd
Func _MouseClickOnScreenCoords($sButton, $hWnd, $iX, $iY, $iSpeed=10)
Local $Struct = DllStructCreate("int X;int Y")
DllStructSetData($Struct, "X", $iX)
DllStructSetData($Struct, "Y", $iY)
_WinAPI_ScreenToClient($Title, $Struct)
$iX = DllStructGetData($Struct, "X")
$iY = DllStructGetData($Struct, "Y")
Local $iOld_Opt = Opt("MouseCoordMode", 2)
$Cpos = PixelGetColor ($iX, $iY)
GUICtrlSetData($Edit1,$iX&","& $iY&" "& $Cpos)
Opt("MouseCoordMode", $iOld_Opt)
EndFunc
[
Ссылки могут видеть только зарегистрированные пользователи. ]
20.02.2011, 21:50
#3
Пехотинец
Регистрация: 13.01.2011
Сообщений: 68
Популярность: 419
Сказал(а) спасибо: 20
Поблагодарили 140 раз(а) в 18 сообщениях
Re: WinAPI GetPixel() - чем заменить?
byearab ,
Там используется PixelGetColor() (Autoit) - эта функция ещё медленнее, чем GetPixel() через WinAPI, - для фешек ещё куда ни шло, но для быстрых, динамичных игр не пойдёт...
Последний раз редактировалось sergaxt; 20.02.2011 в 22:00 .
Причина: Добавлено сообщение
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:06 .