web-dev-qa-db-fra.com

C #: moyen simple et fonctionnel de zoomer des images de la zone de dessin avec des barres de défilement

Existe-t-il un moyen simple et fonctionnel de zoomer une image dans une boîte à images, y compris des barres de défilement?

Pour le moment, j'utilise une boîte d'image dans un panneau avec le défilement automatique activé. Pour zoomer, j'agrandis la boîte à images et je la déplace avec les barres de défilement du panneau. Le problème est qu'il se comporte de façon étrange. Par exemple: si vous zoomez trop loin, la marge entre la bordure supérieure et gauche du formulaire et l'image s'agrandit de plus en plus.

Voilà la méthode de zoom. Je l'ai obtenu de ici .

private void ZoomInOut(bool zoom)
    {
        //Zoom ratio by which the images will be zoomed by default
        int zoomRatio = 10;
        //Set the zoomed width and height
        int widthZoom = pictureBox_viewer.Width * zoomRatio / 100;
        int heightZoom = pictureBox_viewer.Height * zoomRatio / 100;
        //zoom = true --> zoom in
        //zoom = false --> zoom out
        if (!zoom)
        {
            widthZoom *= -1;
            heightZoom *= -1;
        }
        //Add the width and height to the picture box dimensions
        pictureBox_viewer.Width += widthZoom;
        pictureBox_viewer.Height += heightZoom;

    }

Toute aide est appréciée.

Merci d'avance.

Marco

EDIT: Deux captures d'écran d'une image non zoomée et d'une image zoomée (16 fois). Faites attention à la marge entre le bord supérieur de l'image et le bord supérieur du formulaire. UnzoomedImageZoomedImage

11
Marco Frost

Je pense qu'il vaut mieux zoomer (redimensionner) l'image et non la zone d'image. Jetez un oeil à cet article - http://www.codeproject.com/Articles/21097/PictureBox-Zoom

Et

Comment zoomer et dézoomer une image en c #

3
Aseem Gautam