2010-11-11 12 views
0

J'ai une classe rectangle qui a 2 points, le centre axes point et la taille du rectangle. Disons que je veux faire glisser le bas du rectangle avec la souris mais gardez le haut de celui-ci dans la même position. Quel est l'algorithme pour trouver la position centre et la nouvelle taille de rectangle basée sur la souris? Merci d'avance :)Redimensionner par la souris

+0

Vous devez fournir un peu plus de données sur les bibliothèques, etc. que vous utilisez pour créer une fenêtre, un dessin, etc. – Kos

+0

Je ne vois pas comment cela pourrait aider? – Matt

Répondre

1

Déplacez le centre dans la même direction et la moitié de la distance (dans l'un ou l'autre ou les deux X et Y) lorsque le coin inférieur droit a été déplacé.

+0

Battez-moi: -P +1 pour une explication courte et bien écrite. – Bojangles

0

Je suppose qu'une API graphique est à portée de main ici, qu'est-ce que c'est? Je suppose également que vous avez trouvé comment détecter cette souris en cliquant sur le bord de votre boîte, avez-vous décidé exactement comment cela fonctionne? Ont-ils juste besoin de cliquer près de lui, et ils traînent alors le coin exact ou quoi?

Je peux vous dire que vous allez avoir besoin d'enregistrer la position de la souris quand ils cliquent pour la première fois et obtenir la différence à l'endroit où ils se trouvent maintenant. La moitié de cette distance, puis ajoutez-le au centre d'origine.

EDIT

oh, pour la nouvelle taille, sa différence de la position de la souris ajouté sur la taille d'origine. donc si la souris a baissé (en augmentant y) et à gauche (en diminuant x) disons 10 unités dans chaque sens, vous rendez la case dix plus grande et dix plus étroite, le centre sera 5 vers le bas et 5 vers la gauche.

+0

Il utilise un framework 2D créé par mon ami, mais il utilise OpenGL et SDL pour les graphiques. – Matt

0

Il serait plus facile de faire la différence dans le mouvement de la souris et de créer un nouveau rectangle de cette taille. Utilisez ensuite la classe rectangle pour vérifier le point central. Bien plus facile que de compenser le vieux centre.

+0

Aucune chance d'échouer dans le calcul, moins de coder pour commenter, et le code serait plus facile à lire. –