Aide pour un zoom

cs_DashCash Messages postés 8 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 17 octobre 2005 - 6 oct. 2005 à 16:32
cs_yes Messages postés 33 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 26 février 2008 - 24 oct. 2005 à 09:54
Salut à tous!



J'aurais besoin d'un ptit coup de main, je dispose d'une Form dans laquelle j'ai créé une PictureBox.

Je voudrais simplement pouvoir zoomer sur la PictureBox!



Voilà une partie de mon code :



private double ZOOMFACTOR 1.25; // 25% smaller or larger

private int MINMAX = 5;



...



private void ZoomIn()

{

if ( ( ctrlMapView.Width < ( MINMAX * this.Width ) ) &&

( ctrlMapView.Height < ( MINMAX * this.Height ) ) )

{

ctrlMapView.Width = Convert.ToInt32 ( ctrlMapView.Width * ZOOMFACTOR );

ctrlMapView.Height = Convert.ToInt32 ( ctrlMapView.Height * ZOOMFACTOR );

ctrlMapView.SizeMode = PictureBoxSizeMode.StretchImage;

ctrlMapView.Hide();

}



ctrlMapView.Refresh();

}



private void ZoomOut()

{

if ( ( ctrlMapView.Width > ( this.Width / MINMAX ) ) &&

( ctrlMapView.Height > ( this.Height / MINMAX ) ) )

{

ctrlMapView.SizeMode = PictureBoxSizeMode.StretchImage;

ctrlMapView.Width = Convert.ToInt32 ( ctrlMapView.Width / ZOOMFACTOR );

ctrlMapView.Height = Convert.ToInt32 ( ctrlMapView.Height / ZOOMFACTOR );

}

ctrlMapView.Refresh();

}



Le problème est que ça ne zoome pas du tout, j'ai bien l'apparition des scrollbar et la taille de ma PictureBox change bien.

Serait-ce un pb avec le SizeMode?



Merci d'avance.

2 réponses

cs_DashCash Messages postés 8 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 17 octobre 2005
6 oct. 2005 à 16:38
Oups, j'ai oubilé de virer le
ctrlMapView.Hide();

C'était juste pour un test!
0
cs_yes Messages postés 33 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 26 février 2008
24 oct. 2005 à 09:54
Le problème vient de :

ctrlMapView.Width = Convert.ToInt32 ( ctrlMapView.Width * ZOOMFACTOR );

Tu multiplie un int par un double ce qui donne un int : x * 1.25 fait en fait x * 1

Solution :

ctrlMapView.Width = Convert.ToInt32 ( (double)ctrlMapView.Width * ZOOMFACTOR );

(et pareil pour la hauteur).
0
Rejoignez-nous