我想知道如何改变我的代码,以便在放大幻灯片时以及当它处于正常状态时,不要平移超过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
以下是我正在使用的Panning代码:
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
答案 0 :(得分:1)
您的代码正在拖放而不是平移,并调整大小而不是缩放。 如果要平移和缩放,请在Stackoverflow上查看以下问题:
同时检查:
Creating a scrollable and zoomable image viewer in C# Part 4
和此:
PictureBox with zooming and scrolling - 一个工作项目,然而,它不会使用MouseMove,因此您需要使用滚动条。缩放工作。语言是C#。写在VS 2003中 - 需要转换。