Ho una casella immagine impostata su AutoSize in modo che l'immagine lo costringa a crescere fino alle dimensioni dell'immagine.Come si può far scorrere programmaticamente un pannello per esporre la sua casella immagine AutoSized
La casella immagine si trova in un pannello con autoScroll = true, quindi le barre di scorrimento vengono visualizzate quando l'immagine è più grande del pannello.
Come è possibile scorrere a livello di programmazione il pannello mentre l'utente fa clic sulle immagini trascinate sull'immagine, riposizionando quindi l'immagine.
Ho provato a utilizzare l'evento MouseMove, catturando le ultime posizioni X e Y del mouse, calcolando quanto il mouse è stato spostato e regolato i valori di scorrimento verticale e orizzontale del pannello.
Il pulsante sposta l'immagine, ma salta dappertutto e scorre in modo imprevedibile.
Come posso ottenere questo risultato?
Ecco quello che ho tra le Gli eventi del mouse ...
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;
}
È la mia logica sbagliata o è la mia comprensione della funzionalità di scorrimento del pannello sbagliato?
Grazie. Sto lavorando con questo approccio. Il controllo del pannello non mostra le barre di scorrimento se si sposta la casella immagine fuori dai lati superiore o sinistro però :-( –
Oh, è strano - dovrebbe davvero se si attiva lo scorrimento automatico. –