web-dev-qa-db-ja.com

C#:スクロールバーでピクチャーボックス画像をズームするシンプルで機能的な方法

スクロールバーを含むピクチャボックス内の画像をズームするシンプルで機能的な方法はありますか?

現時点では、自動スクロールが有効になっているパネルの画像ボックスを使用しています。ズームするには、ピクチャボックスを拡大し、パネルのスクロールバーで移動します。問題は、奇妙な動作をすることです。たとえば、遠くにズームインすると、フォームの上部と左側の境界線と画像の間のマージンが大きくなります。

それがズーム方法です。 here から取得しました。

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;

    }

どんな助けも大歓迎です。

前もって感謝します。

マルコ

EDIT:ズームされていない画像とズームされた(16倍)画像の2つのスクリーンショット。画像の上部境界線とフォームの上部境界線の間のマージンに注意してください。 UnzoomedImageZoomedImage

11
Marco Frost

私は画像ボックスではなく画像をズーム(再スケール)する方が良いと思います。この記事をご覧ください- http://www.codeproject.com/Articles/21097/PictureBox-Zoom

そして

C#で画像を拡大/縮小する方法

3
Aseem Gautam