Zoom dans autoresize picturebox [Résolu]

Signaler
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
-
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
-
Bonjour,
J'essaie desesperement depuis un certain temps d'ajouter une fonction zoom au code de Kangoo06 : http://www.csharpfr.com/code.aspx?id=20832 , mais cela reste toujours sans succes.
En effet, ce code permet de redimentionner automatiquement une picturebox lors l'un changement de taille de la fenetre. Je voudrais donc pouvoir y rajouter une fonction zoom en utilisant 2 boutons (+ et -) et une fois l'image zoomee, pouvoir naviguer dessus en utilisant des scrollbars (un peu comme dans paint). Tout cela bien sur en gardant la taille de la picturebox fixe une fois qu'elle a ete redimentionnee. Le probleme c'est que j'ai essaye de rajouter un panel, cela fonctionne mais le panel lui n'est pas redimentionne automatiquement.

Quelqu'un aurait-il une autre idee ou pourrait m'aider a integrer cette fonction?
D'avance merci pour toutes vos suggestions.

*** Kakol ***

10 réponses

Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Salut,
Bon j'ai resolu mon probleme grace a Fildomen et en "bidouillant" avec les Anchors. En effet en mettant les anchors dans les 4 coins pour le panel et la pictureBox , la taille de la pictureBox ne depassait jamais celle du panel et donc les scrollbars n'apparaissaient pas. Donc pour faire le zoom je met les anchors de la pictureBox en haut et a gauche puis je les reinitialise apres. C'est surement pas optimise mais pour le moment ca fonctionne. J'ai aussi remplacer la trackbar par 2 boutons (zoom + et zoom -).
Voici mon code pour pour ceux que ca peut aider (au depart les anchors sont aux 4 coins pour le panel et la pictureBox) :
reprendre le code du message precedent et enlever ce qui correspondait a la trackbar (Zoom_MouseUp) puis ajouter

private void buttonplus_Click(object sender, System.EventArgs e)
{
pictureBoxImage.Anchor=(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left);
if (zoom<10)
{
zoom=zoom+2;
pictureBoxImage.Width = ss.Width + (ss.Width / 4) * zoom;
pictureBoxImage.Height = ss.Height + (ss.Height / 4) * zoom;
}
}

private void buttonmoins_Click(object sender, System.EventArgs e)
{
pictureBoxImage.Anchor=(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left);
if(zoom>=2)
{
zoom=zoom-2;
pictureBoxImage.Width = ss.Width + (ss.Width / 4) * zoom;
pictureBoxImage.Height = ss.Height + (ss.Height / 4) * zoom;
}
if(zoom==0)
{
pictureBoxImage.Anchor= (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
}
}

private void Form1_Resize(object sender, System.EventArgs e)
{
zoom=0;
pictureBoxImage.Anchor= (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
ss = pictureBoxImage.Size;
}

OUF !

*** Kakol ***
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

change la propriété du panel, Anchor

YaoYao !!
1 + 1 = 10
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

je l'avais deja fait. le probleme c'est que le redimentionnement de la picturebox se fais avec le fichier PictureBoxAR.cs du code de Kangoo06 et je n'arrive pas a l'applique au panel.

*** Kakol ***
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

alors tu c koi, tu va aller dans l'evenement de la picture box qui se declanche lors que les dimensions change, et tu vas regler ton panel par rapport a la picturebox

YaoYao !!
1 + 1 = 10
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Je vois pas trop ce que je dois faire donc voila mon code si tu peux m'aiclairer. Pour le zoom j'ai utilise ton code que tu avais mis sur le site precedement. Tout marche (zoom, affichage des scrollbars ...) le seul truc c'est que le panel n'est pas redimentionne automatiquement lors de l'agrandissement de la fenetre,comme l'etait avant la picturebox

private System.Windows.Forms.Button buttonCharger;

private System.Windows.Forms.OpenFileDialog openFileDialog1;

private System.Windows.Forms.CheckBox checkBoxCenterImage;

private System.Windows.Forms.CheckBox checkBoxResize;

private AutoResizePictureBox.PictureBoxAR pictureBoxImage;

private System.Windows.Forms.Panel Cont;

private System.Windows.Forms.Panel panel1;

private System.Windows.Forms.TrackBar Zoom;

// ..... //

static
void Main()
{
Application.Run(
new Form1());
}

System.Drawing.Size ss;

private
void Zoom_MouseUp(
object sender, MouseEventArgs e)
{
pictureBoxImage.Width = ss.Width + (ss.Width / 4) * Zoom.Value;
pictureBoxImage.Height = ss.Height + (ss.Height / 4) * Zoom.Value;
}

private
void buttonCharger_Click(
object sender, System.EventArgs e)
{

this.openFileDialog1.ShowDialog();
}

private
void openFileDialog1_FileOk(
object sender, System.ComponentModel.CancelEventArgs e)
{

this.pictureBoxImage.Image = Image.FromFile(
this.openFileDialog1.FileName);
}

private
void checkBoxCenterImage_CheckedChanged(
object sender, System.EventArgs e)
{

this.pictureBoxImage.CenterImage =
this.checkBoxCenterImage.Checked;
}

private
void checkBoxResize_CheckedChanged(
object sender, System.EventArgs e)
{

this.pictureBoxImage.AutoChangeMaxSize =
this.checkBoxResize.Checked;
}

private
void Form1_Load(
object sender, System.EventArgs e)
{
ss = pictureBoxImage.Size;

this.checkBoxResize.Checked =
this.pictureBoxImage.AutoChangeMaxSize;

this.checkBoxCenterImage.Checked =
this.pictureBoxImage.CenterImage;
}

Donc voila ca c'est le code que j'ai dans le Form1 et apres j'ai le fichier PictureBoxAR.cs dont le code sur trouve ici : http://www.csharpfr.com/code.aspx?id=20832

En esperant y arriver un jour ...
merci pour ton aide

*** Kakol ***
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

je comprend toujours pas pkoi anchor marche pas, stp tu peux mettre une capture d'ecran?? si tu trouve pas ou heberger, envoie la moi [mailto:yassinelemalin@hotmail.com yassinelemalin@hotmail.com] , c un pas un gros problème ca, on va trouver surement la soluce

YaoYao !!
1 + 1 = 10
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

ok je t'envoie ca tout de suite.
merci pour le temps que tu m'accorde

*** Kakol ***
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

Salut kakol,

Moi aussi j'ai des soucis avec une fonction zoom. Pouras tu me tenir au courant de l'avancement de ton programme car je suis completement bloque?
Merci d'avance.

--- Moucave , petit singe au pays du c# ---
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Ben pour le moment je suis toujours bloquee. Soit j'ai les scrollbars mais la taille de la picturebox change lorsque je baisse le zoom (Anchor dans les 4 coins pour le panel et, Anchor haut et droite pour la picturebox), soit la taille de la picturebox reste la meme (ce que je cherche a faire) mais les scrollbars n'apparaissent pas (Anchor dans les 4 coins pour le panel et la picturebox) et je ne comprend pas pourquoi. Mais je te tiendrais au courant si ya du nouveau.

*** Kakol ***
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

S@lut!

Merci kakol ton code va bien m'aider car depuis en moment je suis au point mort avec mon zoom.
@ bientot

--- Moucave , petit singe au pays du c# ---