J'ai actuellement un code qui redimensionne un rectangle basé sur le mouvement de la souris lorsque l'utilisateur clique sur plusieurs ancres qui correspondent aux zones suivantes: Gauche, Haut, Droite, Bas, TopLeft, TopRight, BottomLeft, BottomRight.Redimensionnement d'un rectangle et accrochage à un taux fixe
Ainsi, l'utilisateur peut cliquer et faire glisser l'ancre supérieure et ajustera la coordonnée supérieure du rectangle en fonction de l'emplacement de la souris. Pareil pour tous les autres ancres. Après le fait je veux imposer un rapport fixe (tel que 2: 3 ou 5: 7) en accrochant les côtés appropriés du rectangle basé sur l'action. Je l'ai fait pour les ancres Left, Top, Right et Bottom parce que c'est facile, si je redimensionne la largeur, j'ai juste besoin d'auto-dimensionner la hauteur en fonction du ratio, et vice-versa. La difficulté que j'ai est quand l'utilisateur est en train de glisser un coin tel que l'ancre en bas à droite ou en haut à gauche. J'ai besoin de comprendre comment choisir le côté à enclencher. J'ai la coordonnée de la souris et la gauche, le haut, la droite et le bas du rectangle.
Voici le code que j'ai essayé:
case Anchor.BottomRight:
float maxRight = CursorPosition.X;
float maxBottom = CursorPosition.Y;
float newRight = Bounds.Left + (Bounds.Width * widthRatio);
float newBottom = Bounds.Top + (Bounds.Height * heightRatio);
if (newRight < maxRight)
{
Width = Height * widthRatio;
}
else
{
Height = Width * heightRatio;
}
break;
Dans un exemple d'un rapport fixe de 2: 3 la widthRatio serait 0,666 et heightRatio serait 1,5.
Ce code fonctionne la moitié du temps, mais bien sûr, il s'agit essentiellement d'une chance de travailler 50/50. Je dois identifier une condition appropriée pour casser la largeur ou la taille.
Super! Que se passe-t-il si cela ne convient pas à l'un ou l'autre cas? Alors c'est déjà convenablement en ratio? –
C'est correct. –