注册 登录
编程论坛 VB6论坛

求助 form1里面添加picture 实现滚动条可以上下左右拖动图片 有程序见下载

迪拜 发布于 2012-10-05 21:05, 2988 次点击
各位VB好手!俾人有一简单的VB小程序遇到了麻烦,恳请大家帮我一下,俾人将感激涕零

只有本站会员才能查看附件,请 登录


程序要实现的功能是:
   图像灰度处理。
   已经写好了大体代码,但是对于数码图像(1-2M吧)却遇到了问题,图像显示不全。
   于是求助,得到picture放于一容器中然后加上滚动条,当图片长宽超过form窗体长宽时,于是滚动条大显神威!!!
   但是自己真的无法实现,得到的却是只能往一个方向滚动图片(滚着滚着就找不到图片了)。求一段能实现上下左右都能滚动图片的代码,同时生成的图片也如此。
   求指正!!!!!

   改一下代码

[ 本帖最后由 迪拜 于 2012-10-6 15:13 编辑 ]
10 回复
#2
wube2012-10-06 02:18
由于没VB6暂且只能用想像的,思路大概是....

1.拉个Frame。
2.在Frame里放个图片框。
3.在Frame里放个垂直滚动条(预设使用隐藏状态)。
4.在Frame里放个水平滚动条(预设使用隐藏状态)。
5.打开图片框的AutoSize。
6.在窗体显示图片的当下,代码加入判断若获取图片长宽大于框的长宽时,显示滚动条。
7.设置滚动条和图片框在Frame里的位置。
8.设置并计算滚动条每滚动(移动)一次图片自动上下(左右)移动多少位置。

猜测大概都是在第8项有问题,不过这得上机试,
不然上网找应该也有相关代码,也或许还有更简单的方法,
目前工作上还没遇过类似需求。
#3
wube2012-10-06 02:27
或者你试试将图片框结构中座标指向Frame结构中座标
这是在窗体中内嵌窗体的用法
先前用这招直接在窗体中内嵌整个EXCEL表是OK的
没试过用图片框来搞
#4
风吹过b2012-10-06 11:31
载入图片,或者自己绘制图片。设置图片框大小。
竖滚动条的 MIN =0 ,MAX = 图片框高-可视面积高
横的也类似。

图片框的坐标: TOP= - 竖滚动条的值

如果是绘制的图片,注意设置自动重绘为真,并且图像大小有限制的。
#5
风吹过b2012-10-06 11:33
另外,百度外,发现你前面 灰度 计算公式有问题。

最后不是三原色的平均值,而应该计算亮度 Y ,灰度= RGB(Y,Y,Y)
这样才能达到亮度不变的灰底图片,按三原色平均值计算,红色会更亮一些。
#6
迪拜2012-10-06 15:05
回复 2楼 wube
大神 7 8 两句不会弄 恳求给出代码
#7
迪拜2012-10-06 15:14
回复 5楼 风吹过b
能说的具体些吗 不太明白
#8
wube2012-10-06 17:51
第5点我说错了
AutoSize应该是要关闭才对

第三种方法
也能直接靠图片框3种事件来解决而不用滚动条
唯一不变的是你还是得做计算
MouseDown + MouseUp + MouseMove
#9
wube2012-10-06 18:14
说不定图片框属性中有滚动条的内建功能
若有打开就好了
#10
迪拜2012-10-06 18:40
回复 9楼 wube
图片框没有滚动条功能
#11
风吹过b2012-10-07 20:34
要求窗体上放Picture1 ,然后在 Picture1 放 Picture2 。Picture2 要求比 Picture1 大。
再放二个滚动条。

以下代码使用的是默认的名字,并且只写了竖滚动条。没有设置任何属性。

程序代码:
Option Explicit

Private Sub Form_Load()

With VScroll1
    .Min = -300             '上留空
    .Value = .Min
    .Max = Picture2.Height - Picture1.Height + 300      '加300 为下留空
    .LargeChange = (Picture1.Height / Picture2.Height) * Picture1.Height       '每次翻页翻不到一页
这里是随手写的,没仔细推敲公式
    .SmallChange = 15
End With
End Sub

Private Sub VScroll1_Change()
    Picture2.Top = -VScroll1.Value     '移动
End Sub
1