1 (изменено: wynallon, 2018-08-21 21:34:53)

Тема: AHK: GDIp рисовка линии по координатам

Здравствуйте, помогите пожалуйста, никак не могу разобраться с gdip на ahk. Нужно чтобы с помощью gdip была нарисована простая линия(цвет не важен) с определенной скоростью, желательно что бы медленно, от текущих координат мыши до заданных мною!Буду очень благодарен!

sc22::
PixelSearch, Px, Py, 0, 560, 200, 760, 0xffffff, 5, fast rgb
MouseMove, %Px%, %Py%
{Тут должна начать рисоваться линия от найденных координат пикселя к заданным координатам ниже с равномерной медленной скоростью.Скрипт пишу для игры.
}
MouseMove, 210, 560,
return

2

Re: AHK: GDIp рисовка линии по координатам

Если исправите заголовок, поможем.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: GDIp рисовка линии по координатам

Исправил, так пойдет?teadrinker

4

Re: AHK: GDIp рисовка линии по координатам

wynallon пишет:

AHK: GDIp

Уже лучше, но заголовок должен отражать суть вопроса.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: GDIp рисовка линии по координатам

готово!teadrinker

6

Re: AHK: GDIp рисовка линии по координатам

Gdip_DrawLine в цикле.

7

Re: AHK: GDIp рисовка линии по координатам

Можно по подробнее пожалуйста, и еще вопрос, я скачал gdip.ahk сборку от tic с github, куда этот файл закинуть нужно?На ютубе смотрел видео, там в корневой папке ahk была библиотека Lib.У меня ее почему то в папке не оказалось, ahk скачивал с сайта последнюю версию.Спасибо!Malcev

8

Re: AHK: GDIp рисовка линии по координатам

Если нету, то создайте.
А подробнее вбейте в поиске по форуму эту функцию.
teadrinker, уже делал что-то подобное.

9

Re: AHK: GDIp рисовка линии по координатам

Хорошо, спасибо!Malcev

10

Re: AHK: GDIp рисовка линии по координатам

wynallon пишет:

никак не могу разобраться с gdip на ahk.

wynallon пишет:

я скачал gdip.ahk сборку от tic с github, куда этот файл закинуть нужно?

А как вы пытались разобраться, если ещё к тому времени даже библиотеку не скачали? Для начала разберитесь, куда её нужно положить, затем позапускайте примеры. Когда поймёте, как они работают, только тогда уже пытайтесь применять изученные функции. А пока что ваш вопрос немного не соответствует вашему уровню подготовки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: GDIp рисовка линии по координатам

Добрый день, извините если что-то не так. Проблема была в том что скачал gdip 1.45, а он оказался не рабочим, позже скачал с github-а v2.Сейчас все работает, примеры я поразбирал, квадраты элипсы и круги научился выводить, а вот как простую линию заставить самой двигаться мозг не допирает. На англоязычных форумах подобных тем не нашел . Если есть желание подскажите пожалуйста.teadrinker

12

Re: AHK: GDIp рисовка линии по координатам

wynallon пишет:

скачал с github-а v2

Можете ссылку приложить, откуда скачивали? Не знаю, что за github-а v2.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: GDIp рисовка линии по координатам

Извините, не правильно выразил мысль, скачал ahk.v2-gdip2017.С вопросом разобрался, полазав на ютубе нашел рисовалку на подобии paint, взял от туда пример кода, все работает.Спасибо всем за помощь!teadrinker

14

Re: AHK: GDIp рисовка линии по координатам

Так у нас тут вообще-то ahk.v1. v2 — это не основная ветка, для продвинутых пользователей.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: GDIp рисовка линии по координатам

Все работает, спасибо, можно тему закрыть?

16

Re: AHK: GDIp рисовка линии по координатам

Нельзя, тема полезная.

17

Re: AHK: GDIp рисовка линии по координатам

Тогда еще вопрос, вот собственно код. Ищет пиксель, находит, запоминает его x,y рисует линию к x200 y570 все отлично, но если не находит, он все равно рисует линию, но уже от x0, y0 до x200 y570.По задумке нужно что если пиксель не был найден, то он ничего не рисовал, продолжая поиск пикселя. Не могу понять почему так, хелп пожалуйста.

CoordMode, mouse,Screen
#IfWinActive Dota 2
MyLines := new c_DrawLinesOnScreen()
F1::MyLines.DrawLine()

Esc::ExitApp


#Include Gdip.ahk

Class c_DrawLinesOnScreen {      
	Lines := []
	__New(o="") {
		Gui, New, +Hwndhwnd
		Gui %hwnd%: -Caption +E0x80000 +ToolWindow +AlwaysOnTop +OwnDialogs +Hwndhwnd
		Gui %hwnd%: Show, NA
		hbm := CreateDIBSection(A_ScreenWidth, A_ScreenHeight), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm)      
		G := Gdip_GraphicsFromHDC(hdc)
		if (G < 1)
			pToken := Gdip_Startup(), G := Gdip_GraphicsFromHDC(hdc), this.pToken := pToken
		Gdip_SetSmoothingMode(G, 4), Gdip_SetInterpolationMode(G, 7)
		PenColor := (o.PenColor) ? o.PenColor : "ffff0000", PenWidth := (o.PenWidth) ? o.PenWidth : 3
		pPen := Gdip_CreatePen("0x" PenColor, PenWidth)
		UpdateLayeredWindow(hwnd, hdc, 0, 0, A_ScreenWidth, A_ScreenHeight)
		this.hwnd := hwnd, this.hbm := hbm, this.hdc := hdc, this.obm := obm, this.G := G, this.pPen := pPen
	}

Где-то тут ошибка

DrawLine() {
		Hotkey := RegExReplace(A_ThisHotkey, (A_IsUnicode = 1) ? "(*UCP)^(\w* & |\W*)" : "^(\w* & |\W*)")
		While (GetKeyState(Hotkey, "p") = 1) {
		Loop,
		{
			PixelSearch, x, y, 0, 570, 200, 760, 0xFFFFFF, 10, fast rgb
            Gdip_GraphicsClear(this.G)
			Gdip_DrawLine(this.G, this.pPen, pLine.1, pLine.2, pLine.3, pLine.4)
			Gdip_DrawLine(this.G, this.pPen, x, y, 200, 570)   ; draw new line
			UpdateLayeredWindow(this.hwnd, this.hdc)
            Sleep, 200
}
}
}

18

Re: AHK: GDIp рисовка линии по координатам

ErrorLevel
[v1.1.04+]: This command is able to throw an exception if there was a problem while searching. For more information, see Runtime Errors.

ErrorLevel is set to 0 if the color was found in the specified region, 1 if it was not found, or 2 if there was a problem that prevented the command from conducting the search.

19

Re: AHK: GDIp рисовка линии по координатам

Да пробовал уже, не помогает

DrawLine() {
		Hotkey := RegExReplace(A_ThisHotkey, (A_IsUnicode = 1) ? "(*UCP)^(\w* & |\W*)" : "^(\w* & |\W*)")
		While (GetKeyState(Hotkey, "p") = 1) {
		Loop,
		{
			PixelSearch, x, y, 0, 570, 200, 760, 0xFFFFFF, 10, fast rgb
			If !ErrorLevel
            Gdip_GraphicsClear(this.G)
			Gdip_DrawLine(this.G, this.pPen, x, y, 200, 570)   ; draw new line
			UpdateLayeredWindow(this.hwnd, this.hdc)
            Sleep, 200
			If ErrorLevel
			Sleep, 1000
		}
		}
		}

MandarinKa02

20

Re: AHK: GDIp рисовка линии по координатам

Когда нашелhttps://pp.userapi.com/c845120/v845120499/e132e/TJ52SVzEI60.jpg
Когда не нашелhttps://pp.userapi.com/c845120/v845120499/e1342/IGTsQawQvz8.jpg

21 (изменено: wynallon, 2018-09-07 21:07:46)

Re: AHK: GDIp рисовка линии по координатам

Кажется проблема в PixelSearch, x, y, 0, 570, 200, 760, 0xFFFFFF, 10, fast rgb

22

Re: AHK: GDIp рисовка линии по координатам

Offtop: Вы в программировании давно? Ваш код?
Так-то, если вы новичок, код не ваш и вам вообще плевать, что оно такое, то я вам могу. Ну а если вы опытный программист(что маловероятно), то должны сами додуматься.

Проанализируйте кусочек кода, который выложили. Ошибка в нем, даже не ошибка, а неправильность действий алгоритма.

23

Re: AHK: GDIp рисовка линии по координатам

Да, вы правы, поменял алгоритм, а именно Gdip_GraphicsClear(this.G) перенес в конец цикла, теперь все идеально работает как и задумывалось, всем спасибо за помощь! MandarinKa02