Je commence à utiliser Direct2D et je voudrais savoir comment faire pivoter le cercle dans Direct2D dans l'application Win32 Visual C++ avec le bouton gauche de la souris pressé? Je serai très reconnaissant pour toute aide.Comment faire pour tourner cercle dans Direct2D dans Visual C++ en utilisant le bouton gauche de la souris?
0
A
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
...
}
}
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
Comment lier les coordonnées de la souris avec les coordonnées du cercle ensemble dans ce dernier cas? – user3769902
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