http://www.pptjcw.com

ppt图片滚动循环播放怎么设置:使用Visual Basic宏实现PPT演示过程中图像的“拖动”(瞬移)

    下面的是PPT教程网给你带来的相关内容:

    ppt图片滚动循环播放怎么设置:使用Visual Basic宏实现PPT演示过程中图像的“拖动”(瞬移)

    目录

    目的

    希望在PPT演示过程中使用鼠标任意改变图像的位置,虽然我是希望能够有顺畅的拖动效果,但是没做到…,只能瞬移

    效果

    为某一图像添加宏之后,演示过程中单击图像进入移动状态,直接移动鼠标,一定延时后图像移动至鼠标位置(单机图像+直接移动)

    ppt图片滚动循环播放怎么设置

    ppt图片滚动循环播放怎么设置

    步骤 新建.pptx,更改后缀为.pptm设置PPT允许运行宏:文件->左下选项->信任中心设置->启动宏

    ppt图片滚动循环播放怎么设置

    ppt图片滚动循环播放怎么设置

    启用开发工具选项:文件->左下选项->自定义功能->开发工具

    ppt图片滚动循环播放怎么设置

    开发工具-> Basic->右键新建模块->粘贴宏代码

    ppt图片滚动循环播放怎么设置

    ppt图片滚动循环播放怎么设置

    ppt图片滚动循环播放怎么设置

    为图片加入动作:插入->动作->单击时运行宏 (多张图就都设置一下)

    ppt图片滚动循环播放怎么设置

    '启用选项显式声明,要求声明所有使用的变量
    Option Explicit
    ' 使用WindowsAPI
    Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
    Type POINTAPI
        x As Long
        y As Long
    End Type
    Dim dragMode As Boolean     '当前拖动状态
    Const SM_CXSCREEN = 0       '屏幕像素宽
    Const SM_CYSCREEN = 1       '高
    ' 点击图片切换状态
    Sub ImageClicked(sh As Shape)
        dragMode = Not dragMode
        If dragMode Then Drag sh
    End Sub
    ' 可拖动则开始拖动
    Private Sub Drag(sh As Shape)
        Dim imgX As Integer, imgY As Integer  '图像位置
        Dim presWidth As Long           '演示窗口大小
        Dim presHeight As Long
        Dim screenWidth As Long         '屏幕大小
        Dim screenHeight As Long
        Dim ratioWidth As Double        '比例
        Dim ratioHeight As Double
        
        Dim oldX As Long
        Dim oldY As Long
        Dim cursorPos As POINTAPI       '鼠标位置
        
        ' 获取当前鼠标在屏幕上的位置
        Call GetCursorPos(cursorPos)
        oldX = cursorPos.x
        oldY = cursorPos.y
        
        imgX = sh.Left
        imgY = sh.Top
        ' MsgBox "图像左上" & x & "," & y
        
        presWidth = ActivePresentation.SlideMaster.Width
        presHeight = ActivePresentation.SlideMaster.Height
        ' MsgBox "演示文稿大小:" & presWidth & " x " & presHeight  '(960,540)
        
        screenWidth = GetSystemMetrics(SM_CXSCREEN)
        screenHeight = GetSystemMetrics(SM_CYSCREEN)
        ' MsgBox "屏幕大小:" & screenWidth & " x " & screenHeight    '(1920, 1080)
        
        ratioWidth = screenWidth / presWidth
        ratioHeight = screenHeight / presHeight
        ' MsgBox "ratio : " & ratioWidth & "," & ratioHeight
                
        Dim i As Integer
        i = 0
        While dragMode
            Call GetCursorPos(cursorPos)
            sh.Left = imgX + (cursorPos.x - oldX) / ratioWidth
            sh.Top = imgY + (cursorPos.y - oldY) / ratioHeight
            
            i = i + 1: If i > 1000 Then dragMode = False: Exit Sub
            ' DoEvents
        Wend
        
    End Sub
    

    说明

    在运行 basic宏的时候似乎是阻塞其他,所以图像不会及时刷新,但是使用交还控制权给操作系统来处理这些绘图事件又会显得卡顿ppt图片滚动循环播放怎么设置:使用Visual Basic宏实现PPT演示过程中图像的“拖动”(瞬移),所以还是放弃连续拖动,直接瞬移吧

    方法非常的蠢,循环了1000次持续捕捉鼠标位置并更新图像位置,所以可供拖动的时间可能受电脑处理速度影响ppt图片滚动循环播放怎么设置,可以自己调整倒数第3行循环次数 If i>1000

    感谢你支持pptjcw.com网,我们将努力持续给你带路更多优秀实用教程!

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:ppt动画效果怎么设置顺序:PS怎么将PPT写字的动作做成动画? 下一篇:ppt动画效果怎么设置顺序:ppt怎么做路径动画 ppt制作路径动画

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。