| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8976 人关注过本帖
标题:VB2010如何编程实现图片移动
只看楼主 加入收藏
shk2016
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2016-9-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
VB2010如何编程实现图片移动
在VB2010中,用鼠标点击窗体上图形控件,移动到指定位置,最好有动画效果?
搜索更多相关主题的帖子: 图片 如何 动画 最好 
2016-09-09 10:39
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:20 
基本思路,先记下按下鼠标时的坐标
然后再得到放开鼠标时的坐标
计算得出,鼠标在纵向y,横向x的位移分别是多少,最后利用PicGrh.DrawImageUnscaled 重画图片

  
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '赋初值,图片初始值
        Me.m_Leftx = Me.PictureBox1.Location.X
        Me.m_Lefty = Me.PictureBox1.Location.Y
    End Sub

    Private Sub PictureBox1_MouseDown(ByVal sender As System.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 Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
        Static m As Integer
        If m > 1 And m <= 100 And e.Delta > 0 Then
            m = m + 5
        ElseIf m > 1 And m <= 100 And e.Delta < 0 Then
            m = m - 5
        Else
            m = 100
        End If
        Me.Opacity = m * 0.01
        '   TextBox1.Text = m
        Me.TopMost = True
    End Sub

    Private Sub picturemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Try
            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()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
收到的鲜花
  • shk20162016-09-10 19:43 送鲜花  3朵   附言:我很赞同
  • 不说也罢2016-09-11 09:05 送鲜花  49朵   附言:热心助人
2016-09-10 18:21
shk2016
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2016-9-4
收藏
得分:0 
回复 2楼 梦幻倩影
昨天才在一本书(VB2008 STEP BY STEP)看到,其实移动图片框特方便,VB2008以上支持如下方式移动(例如PICTUREBOX1):
picturebox1.left=picturebox1.left+50    '图片框横向右移动50个单位;
picturebox1.top=picturebox1.top+50      '图片框向下移动50个单位;
picturebox1.location= new point(200,100)   '图片框移动到指定坐标。
就这么简单,利用定时控件就可做出动画效果。


收到的鲜花
  • 不说也罢2016-09-26 10:34 送鲜花  33朵   附言:我很赞同
2016-09-25 17:15
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
如果只是移动picturebox,是可以象你这样,但是如果一张图片放大后,在控件中显示不全,而且又不想缩小,但要看到其它部位的图片呢?
2016-09-26 14:23
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
一张很大的图片,在控件中,只能显示左上角部份,现在想要拖动鼠标,显示右下角的部份,picturebox1.left=picturebox1.left+50  这样肯定不行
2016-09-26 14:25
shk2016
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2016-9-4
收藏
得分:0 
回复 5楼 梦幻倩影
放大缩小图片框也极其的方便:
  PictureBox1.Width = PictureBox1.Width + 15
  PictureBox1.Height = PictureBox1.Height + 15
对图片进行横向和纵向放大
2016-09-27 16:06
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
看来SHK2016 还没看明白我要达到的效果:反正现在没事,截个图给你看看
首先一幅全图如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

然后放大,只看到左上角
图片附件: 游客没有浏览图片的权限,请 登录注册

拖一下可看到图中间任何部分
图片附件: 游客没有浏览图片的权限,请 登录注册

再拖一下可以看到右下角部份
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-09-28 09:21
shk2016
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2016-9-4
收藏
得分:0 
回复 7楼 梦幻倩影
这么大个图片屏幕都装不下,我没移动过,我主要还是移动象棋子
2016-09-29 16:25
ferydear
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-10-12
收藏
得分:0 
楼主你是已经实现了吗,能说下怎么实现的吗。我最近也在做类似的,可以拖拉移动的地图图片。
2016-10-25 14:07
快速回复:VB2010如何编程实现图片移动
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019108 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved