1

私のアプリケーションでは、ビットマップ (jpg) の表示だけでなく、ズームとパンも制御する必要があります (したがって、マウス ボタンを押すと、ズームされた画像をフレーム内で「移動」できます)。

私がしたことは、フォームにパネルを配置し、次にパネル内にピクチャーボックスを配置することでした(上、左に固定)。
したがって、ズームが必要な場合は、ズームボタンイベントから以下のコードを実行するだけです:

    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;
    }

ささいなうまく機能します。画像がズームされ、パネルにスクロールバーが表示されているため、単純なパン機能が動作しています。

私に欠けているのは、パンにマウスを使用する可能性です-画像を任意の方向にドラッグして、画像の他の部分を表示したいです(たとえば、Acrobat Readerが行うように)。MouseMoveイベントを使用してプログラムでスクロールバーを変更
する方法を探しましたが、それを管理できませんでした。

助言がありますか)?

4

2 に答える 2

3

AutoScrollPositionMouseMove イベントでプロパティを設定する必要があります。

MouseDown イベントの位置を追跡し、オフセットを使用して AutoScrollPosition を更新する必要があります。

于 2010-04-09T14:14:06.803 に答える
0

コントロールを作成し、Graphics.DrawImage を使用して画像の一部を描画することをお勧めします。このようにして、画像のスケーリング方法 (トライリニアなど) を制御でき、メモリの使用量も少なくなります。OnMouseMove をオーバーライドして、マウスの動きを取得できます

于 2010-04-09T14:36:25.313 に答える