在winform中,想获取鼠标旋转的角度大小和方向,应该怎么办?对于角度大小,我的思路是原始点、鼠标按下是的点和鼠标松开时的点,构成三角形求出角度大小,但是如何确定顺时针还是逆时针方向了?谢谢

解决方案 »

  1.   

    模仿Word图片旋转或者Photoshop的调色板做一个控件。
      

  2.   

    在MouseMove里处理,取得并保存位置,计算并累加角度
      

  3.   

    可用这样:
    以旋转中心O为原点建立直角坐标系xOy
    MouseDown:得到初始点A,转换得到其在xOy的坐标,求得xOy纵坐标正半轴与OA的夹角α1;总旋转角θ = 0
    第一次MouseMove,得到点B,同上求得α2,旋转角θ1 = α2 - α1(注意θ1是带正负号的);θ += θ1
    第二次MouseMove,θ2 = α3 - α2;θ += θ2
    ...
    MouseUp:得到结束点Z。θn = αn+1 - αn;θ += θn。
    θ为正表示顺时针旋转,负为逆时针。
    可以将θ作为最终旋转角度;或者根据A、O、Z点(或α1和αn+1)求得最终旋转角度,这时θ仅作为判断顺逆时针的依据。
      

  4.   

    没试过的说,不过用Photoshop的时候感觉它的原理就是这样的,应该可行
    还有我上面对αn的描述,或者说各个θn的求法有问题。总的思想不变,但做的时候可能要区别不同象限的点进行不同的处理。