使用c ++拖动时旋转图像

时间:2012-03-23 19:04:19

标签: c++ windows winapi matrix gdi

我想在我的应用程序中旋转一个图像,我想要的是在鼠标单击时,在我选择的顶部创建一个透明窗口,然后拖动旋转该透明窗口,并在拖动结束时,旋转原始图像(销毁透明窗口)

我在MS Outlook中看到过这种用于图像旋转的行为。我想在我的应用程序中完全模拟它。

任何示例代码都将受到高度赞赏。 在此先感谢..

这是我到目前为止编写的代码.. 在鼠标单击时,我可以使用

创建透明窗口
#define POPWINDOWCLASSNAM TEXT("ImageCropper")

RECT     portBounds;

GetWindowRect(hWnd, &portBounds); // hWnd is Custom Control Window where image is there

mOverlayWindowHWND = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_LAYERED, POPWINDOWCLASSNAM, TEXT(""),WS_POPUP | WS_DISABLED |  WS_CLIPSIBLINGS,portBounds.left, portBounds.top, portBounds.right - portBounds.left, portBounds.bottom - portBounds.top,
        0, 0, hxtinst, 0 );

if(mOverlayWindowHWND)
{
    SetLayeredWindowAttributes(mOverlayWindowHWND, RGB(255,0,0), 50, LWA_COLORKEY | LWA_ALPHA);
    ShowWindow(mOverlayWindowHWND, SW_SHOW);
    UpdateWindow(mOverlayWindowHWND);
}

现在在拖动时,

HDC hDC = GetDC(mOverlayWindowHWND);
    ...
    ...
    ...
    ...

现在,我想根据我的鼠标位置旋转这个overlayWindow ......

在Drag End,我有这个..

if(mOverlayWindowHWND) {
    ::DestroyWindow(mOverlayWindowHWND);
}

0 个答案:

没有答案