poire812
Messages postés2Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention20 mars 2008
-
18 mars 2008 à 16:00
poire812
Messages postés2Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention20 mars 2008
-
20 mars 2008 à 09:13
Bonjour,
j'ai une windows form dans laquelle j'ai une image dans un panel et il me faut zoomer au centre de cette image.
J'arrive à zoomer mais que en haut à gauche.
voilà mon code du zoom:
private void initZoom()
{
//cette fonction est appelle par Form1_Load
//on calcule le ratio et on recupere la taille d'origine de l'image
ratio = panel1.BackgroundImage.Width / panel1.BackgroundImage.Height;
largeur = panel1.BackgroundImage.Width;
hauteur = panel1.BackgroundImage.Height;
}
private void ZoomPicture(double niveauDeZoom)
{
//cette fonction est appelle a chaque changement de la trackbar
//elle prend en paramettre le niveau de zoom
//on cree la nouvelle taille de l'image qui sera egale a la taille d'origine
//multiplie par le niveau de zoom
//le int devant les calculs est necessaire car la fonction newsize prend en paramettre
//des entiers, et les divisions nous donne des nombres a virgule
Size nouvelleTaille = new Size((int)(largeur * niveauDeZoom), (int)(hauteur * niveauDeZoom));
//on cree alors une nouvelle image bitmap a partir de l'image originale du panel
//a laquelle on donne la nouvelle taille
Bitmap image = new Bitmap(panel1.BackgroundImage, nouvelleTaille);
//on remplace l'image originale par l'image zoomee
panel1.BackgroundImage = image;
}
public Form1()
{
InitializeComponent();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
//on recupere la valeur de la trackbar
switch (zoom.Value)
{
//suivant la valeur on appelle la fonction zoompicture avec le niveau de zoom souhaite
case 0:
ZoomPicture(1);
break;
case 1:
ZoomPicture(1.25);
break;
case 2:
ZoomPicture(1.5);
break;
case 3:
ZoomPicture(1.75);
break;
case 4:
ZoomPicture(2);
break;
default:
ZoomPicture(1);
break;
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 18 mars 2008 à 17:33
Salut, on ne zoom pas en utilisant le constructeur de la classe Bitmap mais avec la fonction Graphics.DrawImage( .. ) qui prend en paramètres un rectangle source et un rectangle destination.