2015-04-25 1 views

Répondre

0

Vous pouvez appliquer une transformation de rotation à votre cible de rendu à l'aide de la méthode ID2D1RenderTarget :: SetTransform et de la classe auxiliaire D2D1 :: Matrix3x2F. Voir this MSDN topic pour un exemple complet.

Si vous voulez le faire tourner en réponse à un clic de bouton gauche de la souris, vous pouvez gérer un message WM_LBUTTONDOWN dans votre procédure de fenêtre:

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 

    ... 
    } 
} 
+0

je pas besoin de faire tourner cercle avec simple clic de souris, mais je dois appuyez sur LMB et maintenez-le enfoncé en faisant la rotation du cercle avec la souris. – user3769902

+0

Comment lier les coordonnées de la souris avec les coordonnées du cercle ensemble dans ce dernier cas? – user3769902

+0

OK, vous pouvez alors gérer WM_MOUSEMOVE à la place, et vérifier le paramètre lParam dans la procédure de fenêtre, qui contient les coordonnées du curseur de la souris (voir les documents MSDN pour WM_MOUSEMOVE). Appelez ensuite Matrix3x2F :: Rotation avec l'angle des coordonnées x et y par rapport au centre de votre cercle. Je ne suis pas sûr de savoir comment calculer l'angle si. Peut-être poser une autre question pour ça. – user1610015