J'ajoute la "rotation de la souris" à mon programme de dessin 2D. J'ai tout le code qui fonctionne, en calculant fondamentalement l'angle de rotation du clic original de la souris à l'endroit où se trouve la souris.Rotation d'image 2D, quelques problèmes
Je dessine également un rectangle transparent qui tourne, au lieu de faire tourner l'image sur chaque mouvement de souris.
Maintenant, mon problème est le dessin de ce rectangle. Je dessine le rectangle à partir de la position x/y de l'image, sa largeur/hauteur étant ce que l'image rapporte.
Cependant, après la rotation d'une image rectangulaire, sa nouvelle largeur et la hauteur est beaucoup plus grande, car ces deux captures d'écran devraient aider à clarifier: During rotation et after rotating then rotating again - le petit « poignées » montrer où les images' x/y/width/height extends to
Dans la deuxième capture d'écran, en raison de la rotation, l'image a été complétée, en quelque sorte avec des espaces (difficile à décrire avec du texte!). Par exemple. une image de 200x100 peut finir comme 150x150 (environ) après la rotation, ce qui semble un peu étrange lors du redimensionnement de la 2ème fois.
Est-ce que quelqu'un a une idée pour résoudre ce problème?
Salut, merci, je pensais que c'était la façon de le faire. Je garde une image originale, et baser toute mise à l'échelle/rotation de cela. Ce qui conduit à un autre problème ... J'ai aussi du code pour la mise à l'échelle, mais je ne suis pas sûr de savoir comment l'incorporer avec le code de rotation. Chaque classe Image conserve les variables de rotation/d'échelle des instances, mais dois-je faire une rotation ou une remise à l'échelle en premier? –
Un autre problème est que j'utilise essentiellement le code de rotation d'image de wxWidgets - et mes "poignées de rééchelonnement" aux coins de l'image sont tirées des valeurs renvoyées par GetWidth/Height. Devrais-je maintenant suivre le rectangle (contour) x/y/largeur/hauteur après la rotation, et utiliser ces valeurs pour déterminer le positionnement de la poignée? –
Peu importe que vous effectuiez une rotation ou une mise à l'échelle en premier, si la mise à l'échelle est uniforme et si le centre de mise à l'échelle et de rotation est le même. Cependant, si vous étirez X et Y à des rapports différents, ou si la mise à l'échelle a une origine différente de la rotation, alors l'ordre est important – comingstorm