Aide pour un zoom

Signaler
Messages postés
8
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
17 octobre 2005
-
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008
-
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

Messages postés
8
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
17 octobre 2005

Oups, j'ai oubilé de virer le
ctrlMapView.Hide();

C'était juste pour un test!
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008

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).