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)?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top