Zoom dans autoresize picturebox [Résolu]

cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 12 août 2005 à 18:12 - Dernière réponse : Moucave 130 Messages postés mardi 21 novembre 2000Date d'inscription 10 septembre 2008 Dernière intervention
- 17 août 2005 à 18:06
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 ***
Afficher la suite 

10 réponses

Répondre au sujet
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 17 août 2005 à 18:02
+3
Utile
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 ***
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_kakol
Fildomen 805 Messages postés jeudi 22 mai 2003Date d'inscription 30 octobre 2010 Dernière intervention - 12 août 2005 à 18:30
0
Utile
change la propriété du panel, Anchor

YaoYao !!
1 + 1 = 10
Commenter la réponse de Fildomen
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 12 août 2005 à 18:36
0
Utile
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 ***
Commenter la réponse de cs_kakol
Fildomen 805 Messages postés jeudi 22 mai 2003Date d'inscription 30 octobre 2010 Dernière intervention - 12 août 2005 à 18:58
0
Utile
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
Commenter la réponse de Fildomen
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 12 août 2005 à 20:14
0
Utile
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 ***
Commenter la réponse de cs_kakol
Fildomen 805 Messages postés jeudi 22 mai 2003Date d'inscription 30 octobre 2010 Dernière intervention - 12 août 2005 à 20:58
0
Utile
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
Commenter la réponse de Fildomen
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 12 août 2005 à 21:18
0
Utile
ok je t'envoie ca tout de suite.
merci pour le temps que tu m'accorde

*** Kakol ***
Commenter la réponse de cs_kakol
Moucave 130 Messages postés mardi 21 novembre 2000Date d'inscription 10 septembre 2008 Dernière intervention - 16 août 2005 à 20:44
0
Utile
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# ---
Commenter la réponse de Moucave
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 16 août 2005 à 21:10
0
Utile
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 ***
Commenter la réponse de cs_kakol
Moucave 130 Messages postés mardi 21 novembre 2000Date d'inscription 10 septembre 2008 Dernière intervention - 17 août 2005 à 18:06
0
Utile
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# ---
Commenter la réponse de Moucave

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.