Gdi+
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
#Include, Gdip.ahk
pToken := Gdip_Startup()
OnExit, Exit
; Создаем окно с нужными стилями для работы gdi+
Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
Gui, 1: Show, NA
; размер рисунка на весь экран.
Width := A_ScreenWidth, Height := A_ScreenHeight
; Начальные настройки для gdi+
hwnd := WinExist() , hbm := CreateDIBSection(Width, Height) , hdc := CreateCompatibleDC()
obm := SelectObject(hdc, hbm) , G := Gdip_GraphicsFromHDC(hdc)
; Режим сглаживания на 4.
;Gdip_SetSmoothingMode(G, 4)
; читаем построчно файл list.txt
Loop,Read,%A_ScriptDir%\list.txt,
{
;Делим строку на 5 частей. 1 и 2 это xy. 5 это color.
;3 и 4 По умолчанию пустые, но если после x и y указать двоеточие(:) то указывается x2 и y2. Нужно что бы рисовать линию между этими точками.
RegExMatch(A_LoopReadLine,"(\d+)/(\d+)(?:\:(\d+)/(\d+)){0,1}/(.*)",xyc)
; Если x2 и y2 пустые задаем им такие же значения как у x1+1 и y2.
% (xyc3 = "") and (xyc4 = "") and (xyc3 := xyc1+0.1)true and (xyc4 := xyc2)true
; В gdi+ еще надо указывать прозрачность. Задаем 100 процентную видимость нарисованного. в color.
xyc5|=0xff000000
; задаем цвет кисти и толщиной в 1 пиксель
pPen := Gdip_CreatePen(xyc5, 1)
; рисуем пиксель\линию.
Gdip_DrawLines(G, pPen , xyc1 "," xyc2 "|" xyc3 "," xyc4 )
; очищаем кисть.
Gdip_DeletePen(pPen)
}
; Обновить\Показать окно.
UpdateLayeredWindow(WinExist(), hdc, 0, 0, Width, Height)
return
Exit:
; gdi+ may now be shutdown on exiting the program
Gdip_Shutdown(pToken)
ExitApp
Return
Читает из файла list.txt который лежит рядом со скриптом.
Что бы нарисовать линию от точки A до B надо указывать в list.txt вот так
x/y:x2/y2/color
Пример: 647/272:647/280/0xFFFFFF
А если указывать стандартно, то работа с одним пикселем.
x/y/color
Пример: 647/272/0xFFFFFF