3

ズームイン中および通常の状態のときに、PictureBoxの端を超えてパンしないようにコードを変更する方法を知りたいです。可能であれば、ホバリングしているマウスの現在の位置でズームし、ズーム中の画質を維持する方法も知りたいです。どんな助けでも大歓迎です。

ズームのコードは次のとおりです。

Private Sub PictureBox_MouseWheel(sender As System.Object,
                             e As MouseEventArgs) Handles PictureBox1.MouseWheel
    If e.Delta <> 0 Then
        If e.Delta <= 0 Then
            If PictureBox1.Width < 500 Then Exit Sub 
        Else
            If PictureBox1.Width > 2000 Then Exit Sub 
        End If

        PictureBox1.Width += CInt(PictureBox1.Width * e.Delta / 1000)
        PictureBox1.Height += CInt(PictureBox1.Height * e.Delta / 1000)
    End If

End Sub

そして、これが私が使用しているパンのコードです:

Private Offset As Point
    Private Sub Picturebox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        Offset = e.Location
    End Sub
    Private Sub Picturebox1_MouseMove(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseMove
    PictureBox1.Select()
    If e.Button = Windows.Forms.MouseButtons.Left Then
        PictureBox1.Left += e.X - Offset.X
        PictureBox1.Top += e.Y - Offset.Y
    End If
    End Sub
4

1 に答える 1

1

コードは、パンの代わりにドラッグアンドドロップを実行し、ズームの代わりにサイズ変更を実行しています。パンとズームを行う場合は、Stackoverflowで次の質問を確認してください。

これもチェックしてください:

C#パート4でスクロールおよびズーム可能な画像ビューアを作成する

この:

ズームとスクロールを備えたPictureBox-作業中のプロジェクトですが、MouseMoveではパンしないため、スクロールバーを使用する必要があります。ズームは機能します。言語はC#です。VS2003で書かれています-変換が必要です。

于 2012-11-23T15:34:40.097 に答える