玉米罐头 发表于 2010-5-21 15:19:45

求助:鼠标滚轮放大缩小图片

我想实现用鼠标滚轮放大或者缩小图片的功能
或者说用滚轮控制滑动杆,特发帖求助,感谢万分。

Obama 发表于 2010-5-22 10:20:20

我见过labview example里面有放大图片,你再将鼠标检测这一个加上就可以实现

飞雨天 发表于 2010-5-22 18:20:46

另外提醒,你在鼠标滚轮事件里加个区域判断,确保鼠标放到图片上面的时候才有此特性

玉米罐头 发表于 2010-5-22 23:40:15

回复 3# 飞雨天 的帖子


    多谢指点,但还有点不懂,不知道鼠标滚轮事件怎么弄,望指教。

玉米罐头 发表于 2010-5-22 23:42:00

回复 2# Obama 的帖子

还是有点不懂,如何检测鼠标滚轮事件,望指教
    ,多谢。

飞雨天 发表于 2010-5-24 09:38:13

鼠标滚轮检测我很自以为是有的,结果从7.1找到2009都没有发现,NI也太迟钝了~~以下是比较无奈的方案:
有如此两个vi来帮助实现,路径function palette-->advanced-->input device control,这里面有6个vi,你需要用到第3、5、6个。基本原理就是acquire input data这个vi的axis info输出最后一个元素可以用来标志鼠标滚轮动作的。没有动作的时候输出为0,有动作就输出一个值,正值代表前滚,负值后滚。为120倍数。
然后我的意思你把这个检测放到事件结构的timeout中,把timeout改造为mouse wheel事件。如果按我3楼说的那样,做个滤除的话,还需要一对mouse enter/leave,最好另外做一个user event,当符合条件的时候(鼠标在图片区域)在timeout里检测到mouse wheel然后在generate你的user event,最后把图片处理程序放到user event框中

玉米罐头 发表于 2010-5-24 13:24:21

回复 6# 飞雨天 的帖子
大概是不是这样:
但是鼠标滚动停止后又回到0,滑动杆也随之变为0.能否当滚轮向前滚动滑动杆值增加,向后滚动值减小呢。


   

飞雨天 发表于 2010-5-24 13:33:47

本帖最后由 飞雨天 于 2010-5-24 13:46 编辑

当然可以,你用shift register存储历史数据,然后稍微做下运算。

另外,你的程序错误很多,首先,打开和关闭之类的函数不必放循环里,外面即可;
第二,stop单独做一个事件,不然你的程序无法停止(或者增加一个timeout,但不如把stop单独做事件来得好)
第三,事件结构里放置的都是耗时短的程序,很少看见延时vi的,你可以把延时放timeout里做

玉米罐头 发表于 2010-5-24 16:37:42

回复 8# 飞雨天 的帖子

尴尬了,我的版本是8.6的,打不开你的程序啊,麻烦截个图片过来,多谢指点。
我是个新手,多谢指出我的错误。

   

飞雨天 发表于 2010-5-24 17:15:56

8.6.......

玉米罐头 发表于 2010-5-24 20:31:09

本帖最后由 玉米罐头 于 2010-5-24 23:42 编辑

回复 10# 飞雨天 的帖子
非常感谢版主,向你学习。
   
页: [1]
查看完整版本: 求助:鼠标滚轮放大缩小图片