Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Данный пример разбивает Desktop на части и возвращает массив координат каждой из частей. Может пригодится для передачи screenshot'a рабочего стола от сервера к клиенту и наоборот, данная функция запускается 1 раз, далее работаем уже с массивом.
Код:
Параметр $iDimension - это высота и ширина куска, в $aArea[0][0] - количество частей.
Код:
Код:
#Include <Array.au3>
$aArea = Desktop_GridArea(100)
If (IsArray($aArea) And ($aArea[0][0] > 0)) Then
_ArrayDisplay($aArea)
EndIf
Func Desktop_GridArea($iDimension)
Local $aArea[1][4], $iWidth, $iHeight, $xPos, $yPos, $xCount, $yCount, $iY, $iX
$iWidth = @DesktopWidth
$iHeight = @DesktopHeight
While 1
$xPos += $iDimension
If ($xPos > $iWidth) Then
ExitLoop
EndIf
$xCount += 1
Wend
While 1
$yPos += $iDimension
If ($yPos > $iHeight) Then
ExitLoop
EndIf
$yCount += 1
Wend
For $iY = 0 To $yCount
For $iX = 0 To $xCount
$aArea[0][0] += 1
ReDim $aArea[$aArea[0][0] + 1][Ubound($aArea, 2)]
$aArea[$aArea[0][0]][0] = $iDimension * $iX
$aArea[$aArea[0][0]][1] = $iDimension * $iY
If ((($aArea[$aArea[0][0]][0]) + $iDimension) <= $iWidth) Then
$aArea[$aArea[0][0]][2] = $iDimension
Else
$aArea[$aArea[0][0]][2] = ($iWidth - $aArea[$aArea[0][0]][0])
EndIf
If ((($aArea[$aArea[0][0]][1]) + $iDimension) <= $iHeight) Then
$aArea[$aArea[0][0]][3] = $iDimension
Else
$aArea[$aArea[0][0]][3] = ($iHeight - $aArea[$aArea[0][0]][1])
EndIf
Next
Next
Return $aArea
EndFunc
Параметр $iDimension - это высота и ширина куска, в $aArea[0][0] - количество частей.