J'ai une zone d'image définie sur AutoSize de sorte que l'image l'oblige à atteindre la taille maximale de l'image.Comment faire en sorte qu'un panneau défile par programmation pour exposer sa zone d'image AutoSize
La zone d'image est dans un panneau avec autoScroll = true, de sorte que des barres de défilement apparaissent lorsque l'image est plus grande que le panneau.
Comment puis-je faire défiler le panneau par programmation lorsque l'utilisateur clique sur les dragées sur l'image, repositionnant ainsi l'image.
J'ai essayé d'utiliser l'événement MouseMove, en capturant les dernières positions X et Y de la souris, en calculant combien la souris a bougé, et en ajustant les valeurs Vertical et Horizontal Scroll du panneau. Il fait bouger l'image, mais il saute partout, et défile de façon imprévisible.
Comment puis-je y parvenir?
Voici ce que j'ai dans mes événements de souris ...
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
if (e.Button == MouseButtons.Left)
{
// move the image inverse to direction dragged
int horizontalChange = (e.X - startingX) * -1;
int newHorizontalPos = panel1.HorizontalScroll.Value + horizontalChange;
if (newHorizontalPos < panel1.HorizontalScroll.Minimum)
{
newHorizontalPos = panel1.HorizontalScroll.Minimum;
horizontalChange = 0;
}
if (newHorizontalPos > panel1.HorizontalScroll.Maximum)
{
newHorizontalPos = panel1.HorizontalScroll.Maximum;
horizontalChange = 0;
}
panel1.HorizontalScroll.Value = newHorizontalPos;
int verticalChange = (e.Y - startingY);
// move the image inverse to direction dragged
int newverticalPos = panel1.VerticalScroll.Value + verticalChange * -1;
if (newverticalPos < panel1.VerticalScroll.Minimum)
{
newverticalPos = panel1.VerticalScroll.Minimum;
verticalChange = 0;
}
if (newverticalPos > panel1.VerticalScroll.Maximum)
{
newverticalPos = panel1.VerticalScroll.Maximum;
verticalChange = 0;
}
panel1.VerticalScroll.Value = newverticalPos;
}
}
startingX = e.X;
startingY = e.Y;
}
Est-ce ma logique erronée ou est ma compréhension de la fonctionnalité de défilement du panneau de mal?
Merci. Je travaille avec cette approche. La commande du panneau n'affiche pas les barres de défilement si vous déplacez le bloc d'image du haut ou du côté gauche par contre :-( –
Oh, c'est bizarre - ce devrait être le cas si vous avez activé l'AutoScroll. –