| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4236 人关注过本帖
标题:如何实现鼠标滚轮缩小和放大Picture box 里面绘制的图形
只看楼主 加入收藏
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
如何实现鼠标滚轮缩小和放大Picture box 里面绘制的图形
如何实现鼠标滚轮缩小和放大Picture box 里面绘制的图形  
就是 我在Picture box 里 画了几条曲线,鼠标点击获取焦点,然后按page down  和page up 可以实现图形的放大和缩小, 即以鼠标点击位置为中心 向两边或者中间扩展!
现在想用鼠标滑轮实现  怎么能读取坐标  会有两个text空间 里显示坐标  
比如当前绘制的曲线 时间段为20s-40s的    如何通过鼠标滑轮滚动实现 19s-41s  或者 21s-39s 的曲线! 滚动一下就能扩大时间段或者缩小时间段!


qq:541075336  望大师不吝赐教!
搜索更多相关主题的帖子: 鼠标 如何 时间段 中心 
2011-08-25 14:10
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
1、你要实现用键盘实现你说放的 实现 19s-41s 或者 21s-39s 的曲线,需要这个实现过程。
2、再把鼠标滚轮与这个操作 联结起来。

3、鼠标滚轮,VB6 是不直接支持的,需要 使用 消息勾子 来自定义处理 这个消息。


Option Explicit

'本函数是抄的网上的,再自己修改

  Public Type POINTL
          x   As Long
          y   As Long
  End Type
  Declare Function CallWindowProc _
          Lib "USER32" Alias "CallWindowProcA" _
                  (ByVal lpPrevWndFunc As Long, _
                  ByVal hWnd As Long, _
                  ByVal Msg As Long, _
                  ByVal wParam As Long, _
                  ByVal lParam As Long) As Long
   
  Declare Function SetWindowLong _
          Lib "USER32" Alias "SetWindowLongA" _
                  (ByVal hWnd As Long, _
                  ByVal nIndex As Long, _
                  ByVal dwNewLong As Long) As Long
   
  Declare Function SystemParametersInfo _
          Lib "USER32" Alias "SystemParametersInfoA" _
                  (ByVal uAction As Long, _
                  ByVal uParam As Long, _
                  lpvParam As Any, _
                  ByVal fuWinIni As Long) As Long
            
  Declare Function ScreenToClient Lib "USER32" _
  (ByVal hWnd As Long, xyPoint As POINTL) As Long
   
  Public Const GWL_WNDPROC = -4
  Public Const SPI_GETWHEELSCROLLLINES = 104
  Public Const WM_MOUSEWHEEL = &H20A
  Public WHEEL_SCROLL_LINES     As Long
               
  Global lpPrevWndProc     As Long
   
  Public Sub Hook(ByVal hWnd As Long)
lpPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, _
AddressOf WindowProc)
''获取"控制面板"中的滚动行数值
'Call SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, WHEEL_SCROLL_LINES, 0)
Call SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, WHEEL_SCROLL_LINES, 0)

If WHEEL_SCROLL_LINES < 3 Then WHEEL_SCROLL_LINES = 3       '防止读取失败,我测试时是读取失败

End Sub
   
  Public Sub UnHook(ByVal hWnd As Long)
          Dim lngReturnValue     As Long
          lngReturnValue = SetWindowLong(hWnd, GWL_WNDPROC, lpPrevWndProc)
  End Sub
   
    '此函数自己修改了
  Function WindowProc(ByVal hw As Long, _
                  ByVal uMsg As Long, _
                  ByVal wParam As Long, _
                  ByVal lParam As Long) As Long
          Dim pt     As POINTL
          Select Case uMsg
                  Case WM_MOUSEWHEEL            '传入的鼠标滚动消息
                    With Form1                                             你到这里按这个进行处理
                        If wParam = -7864320 Then       '向下滚
                              .wz = .wz + WHEEL_SCROLL_LINES
                        ElseIf wParam = 7864320 Then    '向上滚
                              .wz = .wz - WHEEL_SCROLL_LINES
                        End If
                            '处理完滚动消息后,就去显示
                            Call .显示
                    End With

                Case Else
                    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
          End Select
  End Function
   
  Public Function HIWORD(LongIn As Long) As Integer
      HIWORD = (LongIn And &HFFFF0000) \ &H10000
  End Function
   
  Public Function LOWORD(LongIn As Long) As Integer
              LOWORD = LongIn And &HFFFF&
  End Function

授人于鱼,不如授人于渔
早已停用QQ了
2011-08-25 15:45
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
收藏
得分:0 
回复 2楼 风吹过b
改了改 但滑动鼠标时 值没有变化  
就是加个text控件 实时显示鼠标滚动时的值  text 没值啊! 是最后根据鼠标滚动到的位置 相当于偏移量 加减原先的值来画图的!
2011-08-25 18:19
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
收藏
得分:0 
已经搞定了
2011-08-27 15:08
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
combbox支持滚轮,这样可不用钩子,再就是image控件支持图片放大缩小

[ 本帖最后由 lowxiong 于 2011-8-28 14:21 编辑 ]
2011-08-28 14:20
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
收藏
得分:0 
楼主既然搞掂了,能否将你的代码分享一下。。。
共同学习一下。。。
2011-08-30 10:34
flyfeeling
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2011-9-11
收藏
得分:0 
楼主既然搞掂了,能否将你的代码分享一下。。。
共同学习一下。。。
2011-09-19 12:45
flyfeeling
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2011-9-11
收藏
得分:0 
任务:局部放大或缩小PIC中绘制的图形,用鼠标滚轮动作响应

1,放大或缩小那一个段曲线
2,改坐标系统
3,重新绘制,只要观注的部分,也是放大了,如果从小段改成大段数据变化,就是缩小.
4,PIC上无鼠标滚轮动作响应,但私下认为,用左右箭头或翻页键PAGE UP,DOWN,也可以,效果也是可以接受的

2011-09-25 00:02
Hmilycheng51
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-7-14
收藏
得分:0 
楼主既然搞掂了,能否将你的代码分享一下。。。
共同学习一下。。。我的邮箱是773553364@
2018-12-02 17:19
Hmilycheng51
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-7-14
收藏
得分:0 
楼主既然搞掂了,能否将你的代码分享一下。。。
共同学习一下。。。我的邮箱是773553364@
谢谢
2019-05-20 18:23
快速回复:如何实现鼠标滚轮缩小和放大Picture box 里面绘制的图形
数据加载中...
 
   



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

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