Visual c++ 如何在visualc++;使用鼠标左键? 我开始使用DoCT2D,我想知道如何在Win32 Visual C++应用程序中直接按鼠标左键旋转圆圈? 我非常感谢您的帮助。

Visual c++ 如何在visualc++;使用鼠标左键? 我开始使用DoCT2D,我想知道如何在Win32 Visual C++应用程序中直接按鼠标左键旋转圆圈? 我非常感谢您的帮助。,visual-c++,vector-graphics,direct2d,Visual C++,Vector Graphics,Direct2d,您可以使用ID2D1RenderTarget::SetTransform方法和D2D1::Matrix3x2F帮助器类对渲染目标应用旋转变换。有关完整示例,请参见 如果您想在鼠标左键单击时旋转它,可以在窗口过程中处理WM_LBUTTONDOWN消息: LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_LBUTTO

您可以使用ID2D1RenderTarget::SetTransform方法和D2D1::Matrix3x2F帮助器类对渲染目标应用旋转变换。有关完整示例,请参见

如果您想在鼠标左键单击时旋转它,可以在窗口过程中处理WM_LBUTTONDOWN消息:

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_LBUTTONDOWN:
        // Code to re-draw the circle with a different rotation transform

    ...
    }
}

我不需要用鼠标单击来旋转圆,但我需要按下LMB并按住它,用鼠标旋转圆。在最后一种情况下,如何将鼠标坐标与圆坐标绑定在一起?好的,那么您可以使用WM_MOUSEMOVE,并在窗口过程中检查lParam参数,其中包含鼠标光标坐标(请参阅WM_MOUSEMOVE的MSDN文档)。然后调用Matrix3x2F::Rotation,使用x和y坐标相对于圆中心的角度。但我不知道如何计算角度。也许可以问另一个问题。谢谢。这种方法不仅适用于圆的旋转,而且也适用于圆弧、直线或矩形的旋转?