.net中PictureBox中图片的拖动

王朝c#·作者佚名  2006-01-09
宽屏版  字体: |||超大  

.net中PictureBox中图片的拖动

首先在Form窗体上放一个PictureBox,并指定一个图片显示

定义一系列变量处理图片拖动

'处理图片拖动

Private m_Leftx As Integer

Private m_Lefty As Integer

Dim m_MousePosX As Integer

Dim m_MousePosY As Integer

Dim m_DriftX As Integer

Dim m_DriftY As Integer

并给赋初值,可以在Form初始化时做

Me.m_Leftx = Me.PictureBox1.Location.X

Me.m_Lefty = Me.PictureBox1.Location.Y

定义处理鼠标按下的事件

'当鼠标按下时,将鼠标变成手形,并且记录下当前鼠标的位置

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

Me.Cursor = System.Windows.Forms.Cursors.Hand

m_MousePosX = e.X

m_MousePosY = e.Y

End Sub

定义处理鼠标抬起的事件

'处理鼠标按键抬起的事件,根据鼠标按下时保存的鼠标位置,和当前鼠标的位置,计算鼠标移动偏移量,借此调用移动图片的函数,移动图片

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

m_DriftX = m_MousePosX - e.X

m_DriftY = m_MousePosY - e.Y

m_Leftx = m_Leftx - m_DriftX

m_Lefty = m_Lefty - m_DriftY

picturemove(sender, e)

Me.Cursor = System.Windows.Forms.Cursors.Arrow

End Sub

'根据偏移量计算出的图片位置,重画图片

Private Sub picturemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

Dim myBit As New System.Drawing.Bitmap(PictureBox1.Image)

Dim myPicGrh As System.Drawing.Graphics = Me.PictureBox1.CreateGraphics

myPicGrh.Clear(Me.PictureBox1.BackColor)

myPicGrh.DrawImageUnscaled(myBit, m_Leftx - 152, m_Lefty)

myBit.Dispose()

myPicGrh.Dispose()

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有