drawing - 如何使用 Autoit 在 Photoshop 中重绘曲线?
问题描述
我想在Photoshop或mspaint上绘制一条特定的曲线。应保存此绘图操作,以便以完全相同的方式重新绘制该曲线。我怎样才能用 Autoit 做到这一点?有录音和播放机制吗?据我所知,AU3 录音机不再可用。
Photoshop 只是一个例子。我希望能够为不同的目的和程序做那种绘图记录。也许也适用于在线图像编辑器或其他东西。
我对 Autoit 还不是很熟悉。我不希望有完整的代码示例,也许您可以给我一个想法-这将非常有帮助。
目前我尝试了一些鼠标功能,比如MouseDown
,MouseMove
等等,这很有趣,但我真的没有一个概念来记录和重绘这些鼠标动作。
如果我必须澄清更多,请告诉我 - 我会尽力准确。
解决方案
我建议使用两个脚本,一个用于录制,另一个用于回放录制的操作。
录音代码:
; declaration
Global $sFileCoordinates = @ScriptDir & '\RecordedMouseMoveCoordinates.txt'
Global $iRecordingDurationInSeconds = 10
Global $iXSave, $iYSave
; functions
Func _recordMouseMoveCoordinatesToFile()
Local $aPos = MouseGetPos()
If $aPos[0] <> $iXSave Or $aPos[1] <> $iYSave Then
FileWrite($hFile, $aPos[0] & ',' & $aPos[1] & @CRLF)
Local $aPos = MouseGetPos()
$iXSave = $aPos[0]
$iYSave = $aPos[1]
EndIf
Sleep(80)
EndFunc
; processing
Sleep(4000) ; wait 4 seconds to place your mouse to the start position
Global $hFile = FileOpen($sFileCoordinates, 1 + 256)
Global $hTimer = TimerInit()
While Round((TimerDiff($hTimer) / 1000), 1) <= $iRecordingDurationInSeconds
ToolTip(Round((TimerDiff($hTimer) / 1000), 1))
_recordMouseMoveCoordinatesToFile()
WEnd
FileClose($hFile)
录制将在 4 秒延迟后开始。这应该允许将鼠标移动到绘图动作的起点。
Global $iRecordingDurationInSeconds = 10
表示您的绘图动作应在 10 秒内完成(工具提示显示剩余秒数)。这里是秒脚本。
重绘曲线的代码:
; declaration
Global $sFileCoordinates = @ScriptDir & '\RecordedMouseMoveCoordinates.txt'
; functions
Func _getFileContent($sFile)
Local $hFile = FileOpen($sFile, 256)
Local $sFileContent = FileRead($hFile)
FileClose($hFile)
Return $sFileContent
EndFunc
Func _drawRecordedMouseMoveCoordinatesFromFile($sContent)
Local $aFileContent = StringSplit($sContent, @CRLF, 1)
Local $iX = StringSplit($aFileContent[1], ',')[1]
Local $iY = StringSplit($aFileContent[1], ',')[2]
MouseMove($iX, $iY, 4)
MouseDown('left')
For $i = 1 To $aFileContent[0] Step 1
If $aFileContent[$i] <> '' Then
Local $iX = StringSplit($aFileContent[$i], ',')[1]
Local $iY = StringSplit($aFileContent[$i], ',')[2]
MouseMove($iX, $iY, 4)
EndIf
Next
MouseUp('left')
EndFunc
; processing
Sleep(2000) ; wait 2 seconds till start
Global $sFileContent = _getFileContent($sFileCoordinates)
_drawRecordedMouseMoveCoordinatesFromFile($sFileContent)
有 2 秒的启动延迟。所有保存的坐标都将以记录的相同方式执行。它从 开始MouseDown('left')
,然后鼠标移动到MouseUp('left')
。
注意:
由于与您的窗口无关的坐标,这种方法并不是很可靠。请Opt('MouseCoordMode', 0|1|2)
在帮助文件中查看更多信息。如果您想绘制的不仅仅是一条线或曲线,这种方法不是最好的。但是,由于您的问题仅描述了该要求,因此应该没问题。
推荐阅读
- java - 从 Maven Central 以外的位置安装 Maven 依赖项
- nosql - DynamoDB - 如何使用邻接列表模式处理更新?
- azure-devops - 如何将 powerapps 与 azure devops 集成
- javascript - 如何在完成后重置计时器组件
- javascript - useMemo 与 useEffect + useState
- lisp - Lisp中的线性搜索,数组错误
- python - 使用视图从模型类中获取所有数据到模板上
- css - 如何使用 Flex CSS 将文本垂直居中用于条形图
- node.js - 使用 node 和 mssql 从数据库中检索值
- python - 部署到应用引擎标准环境时如何修复“ImportError:无法导入名称库”?