Tengo un cuadro de imagen configurado en Tamaño automático para que la imagen lo obligue a crecer al tamaño completo de la imagen.¿Cómo puedo hacer que un panel se mueva programáticamente para exponer su cuadro de imagen de tamaño automático?
El cuadro de imagen está en un panel con autoScroll = true, de modo que las barras de desplazamiento aparecen cuando la imagen es más grande que el panel.
¿Cómo puedo desplazar el panel mediante programación a medida que el usuario hace clic en los arrastres de la imagen, reposicionando así la imagen.
He intentado usar el evento MouseMove, capturar las últimas posiciones X e Y del mouse, calcular cuánto se movió el mouse y ajustar los valores de desplazamiento vertical y horizontal del panel.
Lo hace mover la imagen, pero salta por todos lados y se desplaza de manera impredecible.
¿Cómo puedo lograrlo?
Esto es lo que tengo en mis eventos del ratón ...
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;
}
Es mi lógica equivocada o es mi comprensión de la funcionalidad de desplazamiento del panel de mal?
Gracias. Estoy trabajando con este enfoque. El control del panel no muestra las barras de desplazamiento si mueve el cuadro de imagen fuera de los lados superior o izquierdo :-( –
Oh, eso es extraño, realmente debería hacerlo si tiene activado AutoScroll. –