VB的image控件的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 14:58:10
用一个image和7个command控件控制7个不同的图片在iamge中显示,就是连续点同一个command,它就控制它所控制的那个图片在image显示或消失,如果点不同的按钮,每点一个按钮,就消失前一个按钮所显示的图片,显示该按钮所控制的图片.也就是说每个按钮第一次点时显示它所控制的图片,第二次点时消失该图片.
要求通过控制image.picture的属性来现实这个效果,如果是用Image4.Visible来实现的话我会.
满意回答50分以上!谢谢各位!

这个问题我遇过类似的,不过现在没有VB可以试验,自己也还没搞得很明白,所以提供一点思路:

用picture属性来实现这个效果,需要解决“控制图片有、无”和“知道图片有、无”共四个方面的问题。

控制图片的“有”最简单了,就是Loadpictuer函数。Loadpictuer返回的是一个图片句柄,也可以说是个IPictureDisp对象(这就是我还没搞明白的地方)。

所以,可以猜想Picture属性是个long类型数据或是一个对象引用。所以,可以通过判断picture属性是否等于0或是否等于nothing来知道是否有图片,也可以用赋值为0或nothing来清除图片。这是我猜想的,但实际用“等于0或nothing”来判断是否有图似乎不稳定,有时可以,有时不可以(这也是我没搞明白的地方,不过对于image这个控件就没试过)。

另外,用image.picture=0 或 set image.picture = nothing 来清除图片,可能还有一个刷新问题。如果image控件有autoRedraw属性,设为true试试能否避免这个问题。

还有,Loadpictuer返回一个long类型数值,这个数值可以指代一张图片,你可以先定义7个变量,如a(0)、a(1)、a(2)……,先把7张图片Loadpictuer给这7个变量,以后就不用频繁的从硬盘读取数据了。因此也可以设想令“图片消失”的另一个方法,就是用第八张图,赋值给第8个变量,通过交换图片实现图片消失的效果。

说了那么多,归纳一下代码。按第一个思路,代码大概是:

---------------------------------------------------------

通用部分声明一个数组存放7张图片:
dim a(0 to 6) as long

窗口的load事件中,载入图片,把图片句柄保存起来:
a(0)=loadpicture(“图片1”)
a(1)=loadpicture(“图片2”)
……

按钮做成控件数组(相信楼主会用控件数组吧?注意控件下标