• 用鼠标动态画圆


    已知圆心坐标O(x,y),圆上一点的坐标A(xA,yA),用鼠标从A点顺时针方向画指定的度数。

    需要注意,X轴的正方向是→,Y轴的正方向是↓,按顺时针方向画圆实际上角度是越来越小。

    解题思路:画圆可以将圆的360°角划分为N等分,这里就划分为360等分,再获取每个度数所对应的圆上的点的坐标来画点,由点连成一个圆。

    原理是利用圆的参数方程:
    横坐标X=圆心横坐标+半径*Cos(弧度)
    横坐标Y=圆心纵坐标+半径*Sin(弧度)

    autoit代码如下:

    Run("mspaint.exe")
    
    Sleep(2000)
    
    WinActivate("[class:MSPaintApp]")
    WinSetState("[class:MSPaintApp]", "", @SW_MAXIMIZE)
    ;以上是调起画图工具,在画图工具上画圆 _DrawCircleByPoint(400,400,500,300) Func _DrawCircleByPoint($iCenterX, $iCenterY, $iOnCircleX, $iOnCircleY, $iDegree = 360, $iDelay = 10, $iSpeed = 0, $pi = 3.14159265358979) Dim $iRadius = Sqrt(($iCenterX - $iOnCircleX) * ($iCenterX - $iOnCircleX) + ($iCenterY - $iOnCircleY) * ($iCenterY - $iOnCircleY)) ;get the radius If $iOnCircleX <= $iCenterX Then $doubleStartDegree = $pi - ACos(($iCenterX - $iOnCircleX)/$iRadius);二象限 If $iOnCircleY > $iCenterY Then $doubleStartDegree = ACos(($iCenterX - $iOnCircleX)/$iRadius) + $pi ;三象限 EndIf Else $doubleStartDegree = ACos(($iOnCircleX - $iCenterX)/$iRadius);一象限 If $iOnCircleY > $iCenterY Then $doubleStartDegree = 2*$pi - $doubleStartDegree;四象限 EndIf EndIf $doubleStartDegree = $doubleStartDegree * 180 /$pi ;get the degree _DrawCircle($iCenterX, $iCenterY, $iRadius, $doubleStartDegree, $iDegree, $iDelay, $iSpeed, $pi) EndFunc #cs $iCenterY = 圆心纵坐标 $iCenterX = 圆心横坐标 $iRadius = 圆半径 $iDegree = 圆弧度数,缺省为360° $iDelay = 鼠标移动延时,单位为毫秒,缺省为 10 $iSpeed = 鼠标移动速度,范围为 1(最快)-100(最慢),缺省为 0 $pi = 圆周率 pi,缺省为 3.14159265358979 eg:_Circle(@DesktopWidth / 2, @DesktopHeight / 2, 200, 180) #ce Func _DrawCircle($iCenterX, $iCenterY, $iRadius, $doubleStartDegree, $iDegree = 360, $iDelay = 10, $iSpeed = 0, $pi = 3.14159265358979) Local $iMouseX, $iMouseY For $i = $doubleStartDegree To $doubleStartDegree - $iDegree Step -1 $iMouseX = $iCenterX + $iRadius * Cos($i * $pi / 180) $iMouseY = $iCenterY - $iRadius * Sin($i * $pi / 180) ConsoleWrite($i & @CRLF) Sleep($iDelay) MouseMove($iMouseX, $iMouseY, $iSpeed) MouseDown("left") Next MouseUp("left") EndFunc ;==>_Circle
  • 相关阅读:
    redis 操作使用
    sublime 设置像IDE一样的 ctrl+鼠标左键 跳转到定义方法
    tensorflow进阶篇-5(反向传播2)
    tensorflow进阶篇-5(反向传播1)
    Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+(退出)和ctrl+d(EOF)的区别(转)
    mysql基础知识(3)
    mysql基础知识(2)
    tensorflow进阶篇-4(损失函数3)
    tensorflow进阶篇-4(损失函数2)
    mysql基础知识(1)
  • 原文地址:https://www.cnblogs.com/jenney-qiu/p/4334465.html
Copyright © 2020-2023  润新知