Monday, October 27, 2008

Article sur Code Project : a Graphical Rectangle Resizable

Je voulais une zone rectangulaire de sélection dans une zone de Dessin pour un programme en c#.
Je l'ai fait est je me suis dis qu'il fallait que je partage ce petit bout de code avec d'autre.

L'idee est d'afficher un rectangle avec des poignées pour le redimensionner comme on veux.
Add Image
Voici le lien :
a Graphical Rectangle Resizable

Et quelle fut ma surprise quand j'ai vu que Ilíon a mis un commentaire.
Il m'a félicité, et aimerais que le rectangle ne dépasse pas la zone.

Donc j'ai fait cela de la maniere suivante:
A la fin des modifications alors je teste si le rectangle est toujours dans la zone.
Si non soit on bloque la valeur ou je reduis la hauteur et la largeur du rectangle.

public bool allowDeformingDuringMovement=true ;

Si l'on bouge le rectangle contre les bords alors il s'applatit ( la hauteur ou la largeur diminue suivant le sens ).


if (rect.X + rect.Width > mPictureBox.Width)
{
rect.Width = mPictureBox.Width - rect.X - 1; // -1 to be still show
if (allowDeformingDuringMovement == false)
{
mIsClick = false; // on arrete les mouvements
}
}
if (rect.Y + rect.Height > mPictureBox.Height)
{
rect.Height = mPictureBox.Height - rect.Y - 1;// -1 to be still show
if (allowDeformingDuringMovement == false)
{
mIsClick = false; // on arrete les mouvement.
}
}





No comments: