我想在我的表单上显示一个我可以用鼠标控制的地图。我希望能够使用滚轮调整地图的缩放,我希望能够在我放大时围绕地图移动视图,这样我就可以环顾四周。我希望图片框是静态的,只是将下面的实际图像移动到很好的环绕地图的错觉。我对此有很多困难。是否可以移动移动静态图片框中的图片或者我是否必须使用某种图形绘制来动态显示地图的正确部分?
答案 0 :(得分:0)
我建议您使用Paint事件直接在表单或Panel中绘图。是的,可以在PictureBox中重新定位图像,如下所示:
Public Class Form1
Private _moveIt As Boolean = False
Private _coyote As Image
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
_coyote = PictureBox1.Image
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
_moveIt = True
PictureBox1.Invalidate()
End Sub
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
If _moveIt = True Then
PictureBox1.Image = Nothing
e.Graphics.DrawImage(_coyote, New Rectangle(New Point(32, 64), _
New Size(_coyote.Width, _coyote.Height)))
End If
End Sub
End Class
但请注意,PictureBox的图像已被删除(设置为Nothing),因此不再使用区分PictureBox的一件事。
要继续使用PictureBox的Image属性,您必须每次都根据原始图像重新创建图像,并将其设置为Image属性。这不是一个可行的方法。只需使用Paint及其Graphics对象在表单或面板中绘制图像。