PictureBox Windows Form con zoom e panoramica
-
25-09-2019 - |
Domanda
Le mie esigenze applicative controllare le bitmap visualizzazione (jpg) ma anche lo zoom e panning (quindi se si preme il pulsante del mouse si puo 'spostare' immagine all'interno cornice ingrandita)
Quello che ho fatto è stato mettendo pannello in forma, poi pictureBox all'interno del pannello (ancorata alto, a sinistra).
Quindi, se ho bisogno di una visione ingrandita sto solo eseguendo sottostante Codice da Zoom pulsanti eventi:
private void ZommInOut(bool zoom) {
int zoomRatio = 10; // percent
int widthZoom = pBox.Width * zoomRatio /100;
int heightZoom = pBox.Height * zoomRatio /100;
if (zoom) {
widthZoom *= -1;
heightZoom *= -1;
}
pBox.Width += widthZoom;
pBox.Height += heightZoom;
}
Funziona bene meschino. L'immagine è ingrandita, pannello di visualizzazione di barre di scorrimento -. Così mi è semplice lavorare panning funzionalità
Ciò che manca per me è possibilità di uso del mouse per il panning -. Mi piacerebbe immagine trascinare in qualsiasi direzione per vedere altra parte di immagine (come fa ad esempio Acrobat Reader)
Ho cercato il modo di utilizzare MouseMove evento e cambiare le barre di scorrimento programically ma non riuscivo a gestire questo.
Ogni suggerimento (s)?
Soluzione
È necessario impostare il AutoScrollPosition
beni in caso MouseMove.
Avrete bisogno di tenere traccia della posizione dell'evento e aggiornamento AutoScrollPosition MouseDown utilizzando un offset.
Altri suggerimenti
Vorrei suggerire la creazione di un controllo e di disegno parte dell'immagine utilizzando Graphics.DrawImage - in questo modo è possibile controllare come l'immagine viene scalata (trilineare, ecc) e sarà anche possibile utilizzare meno memoria. È possibile ignorare OnMouseMove per ottenere i movimenti mosue