程序接龙

Author: 杨太兴 Date: 2000年 第44期

  在编程中我们常常通过将两个标签错落排列,以使显示的字符呈现阴影效果。受此启发,本人对《电脑报》第40期17版上的“霓虹灯”效果程序稍作改动——即将原程序设计中“一个字符用一个标签”改为一个字符用多个标签,顺利实现了程序接龙要求:在VB程序中能同时用多种颜色显示一个字符。
#1  实现原理:
  这里我们假设一个字符用3个标签(AutoSize属性为False),让这3个标签分别只显示出Caption的某一部分(左中右),然后将这3个标签从左至右顺序相连组成一个完整的字符,这样就可同时在一个字符上呈现3种色彩。如果愿意,你可以用更多个标签来组成一个字符,这样每一个字符同时呈现的色彩会更丰富、整体效果也会更好些。
#1  实现方法:
  只需在原“霓虹灯”效果程序的基础上增添足够的标签,然后按上述原理调整好标签位置,并将程序代码中涉及到标签个数之处作相应变动,仅此而已!当然为了使“霓虹灯”的色彩变换更平滑,可增加合成渐变色的种数。以下示例中合成渐变色由原21种增加至51种,并在窗体上增加了一水平滚动条HScroll2用以控制渐变效果。虽然也只摸拟了三种霓虹灯样式,但通过HScroll1改变定时器延时值或通过HScroll2控制用于渐变的颜色数,会产生很多效果。
  窗体设置好后,加入以下代码试试!
#1  程序代码:
  Option Explicit
  Dim choise As Byte
  Dim R(50) As Byte,G(50) As Byte
  Private Sub Form_Load()
   Dim j As Byte
   Me.WindowState=2
   For j=0 To 25 ′合成渐变色(由原21种增加到51种,使其更平滑)
    R(j)=250-j * 10 ′红变绿
    G(j)=j * 10
    R(50-j)=R(j) ′绿变红
    G(50-j)=G(j)
   Next j
  End Sub
  Private Sub Timer1_Timer() ′变换色彩
   Static i As Long
   Dim j As Byte,C As Byte
   i=i+1
   For j=0 To 38 ′改变所有标签的颜色
    Select Case choise
     Case 0: ′背景渐变
      C=(i+j) Mod HScroll2
      L(j).BackColor=RGB(R(C),G(C),0)
     Case 1: ′字符渐变
      C=(i+j) Mod HScroll2
      L(j).ForeColor=RGB(R(C),G(C),0)
     Case 2: ′背景多变
      C=((i+j) Mod 6)+9
      L(j).BackColor=QBColor(C)
     End Select
   Next j
  End Sub
  Private Sub Command1_Click(Index As Integer)
   choise=Index′按钮选项号
   ′以下5行可省略!此处仅为切换演示各种霓虹灯效果所需。
   Dim j As Byte
   For j=0 To 38
    Me.L(j).BackStyle=IIf(choise=1,0,1) ′决定标签是否透明
     Me.L(j).ForeColor=QBColor(10+Index) ′使各种霓虹灯效果有固定的前景色
   Next j
  End Sub
  Private Sub HScroll1_Change() ′控制快慢
   Timer1.Interval=HScroll1
  End Sub
  (编者注:至此,我们关于“霓虹灯”效果的接龙就告一段落了。希望各位PFans继续关注“程序接龙”栏目。)