vfp界面設(shè)計(jì)技巧(給初學(xué)者)
一、 緩慢移入和飛入:
在表單里,建立一個(gè)名為Image1的圖象控制,此控件的Picture屬性已設(shè)好,讓這幅圖片從底部緩慢移入屏幕,要做那些工作呢?首先,將Image1的Top屬性設(shè)為450(或根據(jù)你屏幕設(shè)置改為別的數(shù)字),也就是說(shuō),讓圖片的頂部剛好位于屏幕的下邊界;然后,建立一個(gè)名為T(mén)imer1的計(jì)時(shí)器,并將Timer1的Interval屬性設(shè)為10;接著,在Timer1的Timer事件中,寫(xiě)上幾行這樣的代碼:
stayposition=100 speed=3 If Thisform.Image1.top
---- 其中,變量stayposition用于控制圖片最后停留的位置,變量speed用于控制圖片的移動(dòng)速度。運(yùn)行這個(gè)表單,將會(huì)看到一幅圖片以你需要的速度,從屏幕底部出發(fā),一直移動(dòng)到你所需要的位置,然后停下來(lái)。如果你想程序運(yùn)行時(shí),要有一定的動(dòng)作(例如單擊屏幕),圖片才開(kāi)始移動(dòng),我們可以先把Timer1的Enabled屬性設(shè)為.F.,然后在Fomr1的Click事件上寫(xiě)上代碼:Thisform.Timer1.enabled=.T.即可。
---- 當(dāng)你真正理解底部緩慢移入的原理和實(shí)現(xiàn)方法時(shí),所謂的底部飛入、從右下角緩慢移入、從頂部飛入、從右側(cè)飛入等等效果就輕而易舉了,這里簡(jiǎn)單地說(shuō)一下:飛入,將speed的值改大即可;從頂部移入,稍為復(fù)雜一點(diǎn),要將語(yǔ)句If Thisform.Image1.top”,并將語(yǔ)句Thisform.Image1.top=Thisform.Image1.top-speed中的“-”改為“+”,還要修改圖片初始的top屬性,讓圖片開(kāi)始時(shí)是處于屏幕的頂部;從右側(cè)移入,需要修改圖片的初始left屬性,并將上面程序中的所有top改為left;而從左上角、右下角等處斜斜移入,則在程序中需要同時(shí)改變圖片的top和left屬性。不過(guò),所有這些的道理都是一樣的。
---- 二、 切入:
---- 以右側(cè)切入為例。這種效果看起來(lái)是從右到左將圖片拉來(lái)出來(lái)。實(shí)現(xiàn)的方法是:先將圖片的width屬性設(shè)為0;建立并設(shè)好計(jì)時(shí)器控件;在計(jì)時(shí)器的timer事件中寫(xiě)上如下代碼:
stopwidth=170 speed=12 If Thisform.Image1.width >stopwidth then Thisform.Timer1.enabled=.F. Else Thisform.Image1.width=Thisform.Image1.width+speed Thisform.Image1.left=Thisform.Image1.left-speed Endif
---- 這里,變量stopwidth的值等于圖片的原始寬度。同理,上側(cè)切入的效果只需將上述代碼中的width改為height,將left改為top,并將圖片的height屬性設(shè)為0即可。但由于VFP的一些限制,左側(cè)切入和下側(cè)切入的效果比較難于實(shí)現(xiàn)。
---- 三、 擦除:
---- 向右擦除的效果與從右側(cè)切入非常相象,只是向右擦除看起來(lái)是將圖片從左往右攤開(kāi),而從右側(cè)切入看起來(lái)是將圖片從右往左拉出來(lái)。它們的實(shí)現(xiàn)方法也幾乎一樣,僅將語(yǔ)句Thisform.Image1.left=Thisform.Image1.left-speed去掉就行了。同樣,向上擦除也是類(lèi)似的,但向左、向下擦除的效果不易實(shí)現(xiàn)。
---- 四、 伸展:
---- 伸展跟切入的效果的區(qū)別在于:伸展過(guò)程中,整幅圖片都能看見(jiàn),不過(guò)是變了形的;而切入的過(guò)程中,只能看見(jiàn)圖片的一部分。伸展與切入的實(shí)現(xiàn)也幾乎完全相同,唯一的改動(dòng)是將圖片的stretch屬性設(shè)為2(等比填充)。同樣,其它方向的伸展也是類(lèi)似的。
---- 五、 閃爍:
---- 這個(gè)效果很容易實(shí)現(xiàn)。建立計(jì)時(shí)器,根據(jù)你所需要的閃爍速度設(shè)好它的Interval屬性,一般可設(shè)成500。在計(jì)時(shí)器的timer事件中寫(xiě)上如下代碼:
if thisform. Image1.visible=.f. then thisform. Image1.visible=.t. else thisform. Image1.visible=.f. endif
---- 圖片Image1就能按你的需要閃爍起來(lái),想停止閃爍,將計(jì)時(shí)器的enabled屬性設(shè)為.f.即可。
---- 六、 百葉窗:
---- 這個(gè)效果要實(shí)現(xiàn)比較復(fù)雜,我們先看水平百葉窗。首先,在圖片上面建幾個(gè)白色的空白橫條標(biāo)簽,剛好能將圖片蓋住,這些標(biāo)簽的名字分別取成“label1”、“label2”……;然后建立并設(shè)好計(jì)時(shí)器控件,并在計(jì)時(shí)器的timer事件中寫(xiě)上如下代碼:
speed=3 number=5 if thisform.label1.height >=speed then for i=1 to number j=str(i,int((int(i/10)+9)/10)+1) thisform.label&j..height= thisform.label&j..height-speed next i endif
---- 其中,變量speed用于控制圖片出現(xiàn)的速度,number表示標(biāo)簽的個(gè)數(shù)。一般來(lái)說(shuō)標(biāo)簽的height屬性要設(shè)成speed的倍數(shù),而語(yǔ)句j=str(i,int((int(i/10)+9)/10)+1),是用于根據(jù)i的值來(lái)確定字符j的長(zhǎng)度,避免出錯(cuò)。至于垂直百葉窗效果,將水平百葉窗效果中的橫條標(biāo)簽變成豎條標(biāo)簽,再將代碼中的所有height改為width即可。
---- 七、 棋盤(pán)式:
---- 棋盤(pán)式的實(shí)現(xiàn)方法幾乎和百葉窗一樣,只是空白標(biāo)簽蓋在圖片上面的方式不同。在棋盤(pán)式中,要先建立許多個(gè)標(biāo)簽,但這些標(biāo)簽并不完全把圖片遮住,而是設(shè)計(jì)成國(guó)際象棋的棋盤(pán)那樣,一個(gè)格上放標(biāo)簽,另外一個(gè)格露出圖片,標(biāo)簽依然取名為“label1”、“label2”……代碼則和百葉窗中的完全相同。
---- 八、 回旋: 表面看來(lái),回旋這種
---- 效果是圖片在繞著一根軸在旋轉(zhuǎn),但實(shí)際我們可以通過(guò)改變圖片的width屬性來(lái)實(shí)現(xiàn)這種效果。這時(shí)最好建立兩個(gè)計(jì)時(shí)器,分別命名為timer1、timer2;timer2用于控制減少圖片的寬度,其timer事件的代碼為:
speed=4 if thisform.image1.width<=speed then thisform.timer1.enabled=".t." thisform.timer2.enabled=".f." else thisform.image1.left="thisform.image1.left+speed/2" thisform.image1.width="thisform.image1.width-speed" endif timer1用于控制增加圖片的寬度,其timer事件的代碼為: imagewidth="200" speed="4" if thisform.image1.width>=imagewidth then thisform.timer1.enabled=.f. thisform.timer2.enabled=.t. else thisform.image1.left=thisform.image1.left-speed/2 thisform.image1.width=thisform.image1.width+speed endif
---- 其中,變量speed控制回旋的快慢,值要求是偶數(shù), imagewidth代表圖片的原始寬度,圖片的strecth屬性要設(shè)成2-變比填充。想停止回旋,將timer1和timer2的enabled屬性都設(shè)為.f.即可。
---- 九、 放大縮?。?
---- 這種效果雖然看起來(lái)與回旋相差甚遠(yuǎn),但實(shí)現(xiàn)方法卻與回旋幾乎一樣,只需要把圖片的strecth屬性改為1-等比填充即可,代碼不必做任何改動(dòng)。
---- 十、 變色:
---- 變色效果一般只應(yīng)用于文字。變色有許許多多的方式,這里介紹的是隨機(jī)方式。建立標(biāo)簽對(duì)象label1,設(shè)好其caption屬性;建立計(jì)時(shí)器,其Interval屬性根據(jù)需要而設(shè),一般可設(shè)為500,在timer事件中寫(xiě)上代碼:
i=int(rand()*255) j=int(rand()*255) k=int(rand()*255) thisform.label1.forecolor=rgb(i,j,k)
如果想增添聲音,請(qǐng)加上代碼:
SET BELL TO '你需要的聲音.WAV', 0 CHR(7)
|