2024年4月12日发(作者:)

Powerbuilder 动态显示图片特效

Powerbuilder 动态显示图片特效

Powerbuilder(以下简称PB)是美国Sybase公司研制的一种新型、快速开发工具。在实际应用

中,经常会使用到显示图片,而直接显示图片,有些过于单调,特别是有大量图片展示的应用中。

如果能以特效的方式(如飞入、展开、开门、百叶窗、马赛克等)显示图片,将大大增强用户体

验,也让你的应用显得更加专业。下面根据实际的经验,从以下几个方面谈谈如何实现图片显示的

特效功能。

一、常规方法

大家都知道,PB的文本框是不透明的,虽然平时使用时不太满意,但我们可以利用它的不透明来

实现一些图片显示特效。

1.1 展开特效

在窗口建立一个图形控件,设置图片文件,然后建立一个与图形控件相同大小的文本框,文

本设为空,置于图片控件的上层,这样就把图片掩盖起来了。然后调用一个功能函数,让文本框逐

渐变小,并调整起始位置,这样遮盖的图片就逐渐显示出来了,给人以特效的视觉。

功能函数大致如下:

integer li_loop,li_step

st_ = p_ //st_1 为文本框 p_1 为图形控件

st_ = p_

st_1.x = p_1.x

st_1.y = p_1.y

li_step = st_ /100

for li_loop = 1 to 100

st_1.x = st_1.x + li_step

st_ = st_ - li_step

// messagebox('test','test')

//调用延时函数,在后面具体说明

next

上例的效果是从左往右展开效果,同理,可以实现从右向左的效果(x坐标不变)和从上往

下、从下往上的效果(更改高度)或者从四周同时向中间展开(x、y、width、height同时改变)。

P_1 st_1

1.2 开门效果

参考1.1使用两个文本框,文本框为图形控件的一半大小(左右平分或者垂直平分)一个向

左,一个向右(或者一个向上、一个向下)即可实现开门效果。

1

Powerbuilder 动态显示图片特效

参考1.1使用多个同等大小的文本框,同时控制各个文本框的大小,即可实现百叶窗的效

果,在此不再累述。

st_1 st_2

1.3 百叶窗效果

1.4 放大效果

图形控件宽度或高度逐渐变大即可实现,控制x、y、width或height即可实现向下、向

上、向左、向右,四个角或中间开始。

1.5 马赛克效果

可以使用n个相同大小的文本框,随机控制文本框的显示属性,以达到马赛克的效果。不

过,因为要使用的文本框过多,通常不建议使用该方法。

二、调用 Windows API 函数

实现特效的另一种方法就是调用Windows API 复制图像块,以控制图像的显示,具有非常大的灵

活性。主要使用的API有LoadImageA,BitBlt ,StretchBlt,CreateCompatibleDC,GetDC,

SelectObject,Sleep,DeleteDC,ReleaseDC

下面重点谈谈BitBlt ,StretchBlt函数

2.1 BitBIt 函数

函数功能

BitBIt函数用于将指定设备场景中某个区域内的像素的位数据块(bit-block)转换到另一设备场景中。

2