用VB设计软件封面
对于Windows环境下的应用软件,一个漂亮醒目而且富有立体感变化的封面总会使你的软件更加充满魅力,从而提高软件的商品化程度,增强对用户的吸引力。本文将介绍在Windows环境下使用Visual Basic制作应用软件封面的技术。
一、封面设计技术
1.封面的制作
开发者可以选择一些已有的图像文件,或从其它图像处理过程中截取比较满意的图案,也可以制作具有个人风格的封面。在VB中制作封面时,是在一个窗体上使用VB的绘图工具Line和Shape绘制出图形,也可以在窗体内载入一个Picture Box或Image Control,利用Picture Box或Image Control载入自己喜欢的图片来制作封面,同时在图形之上,可以使用Text Box或Label来显示版本信息。
为了使设计的窗体更加象一个封面,可以去除窗体的控制框、标题栏和最大最小化按钮,窗体的大小不允许用户改变。
在封面窗体的属性中,属性Control Box应设为False,Caption应设为空,MaxButton和MinButton应设为False,BorderStyler属性设为1,即固定的单线边界,这样就设计出了一个标准的封面。
2. 浮动窗体
主窗体载入后,激发封面事件(event),使封面窗体成为当前活动窗体,必须保证封面总是浮在主窗体的上面,在VB中可以通过调用Windows的API函数SetWindowpos来实现。SetWindowpos函数的声明如下:
Declare Sub SetWindowPos Lib ″User″ (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer)
其中:hWnd是作为封面窗体的句柄;
hWndInsertAfter 指示为封面窗体前载入的窗体;
X为封?娲疤遄笊辖堑腦坐标;
Y为封面窗体左上角的Y坐标;
cx为窗体新宽度;
cy为窗体新高度;
wFlags影响窗体大小和位置的16位值。
其中,hWndInsertAfter设为HWND—TOPMOST,wFlags设为SWP—NOMOVE (不移动窗体,即忽略cx和cy)或SWP—NOSIZE(不改变窗体大小,即忽略X和Y),就可以实现将HWND标识的窗体置于主窗体之上。
3. 封面卸载
保证主窗体载入完毕后,封面窗体自动卸出。在主窗体中可使用定时器控件,在激活主窗体的Activate事件时激活定时器,设置定时器活动时间属性,在定时器控件的事件Timer中,关闭定时器,卸出封面,释放存储空间,提高软件运行速度。
二、封面设计程序
假设封面窗体名为frmface,主窗体名为frmfirst,其中封面窗体可以用绘图指令绘出。程序中给出了绘制三维窗体的方法,在封面窗体载入过程中,窗体上可根据用户需要绘制三维面板或图片框等。
Sub Form—Load ()
Dim fWidth As Integer
Dim i As Integer, t As Integer, l As Integer
Dim w As Integer, h As Integer
frmface.BackColor=&HC0C0C0
frmface.Left=(screen.Width-Width) / 2
frmface.Top=(screen.Height-Height) / 2
frmface.ScaleMode=3: fWidth=4
frmface.AutoRedraw=-1
For i=1 To fWidth
t=i
l=i
h=scaleheight
w=scalewidth
Line (l, t)-(l, h-i), RGB(255, 255, 255)
Line (l, t)-(w-i, t), RGB(255, 255, 255)
Line (w-l, t)-(w-l, h-t), RGB(64, 64, 64)
Line (l, h-l)-(w-l, h-l), RGB(64, 64, 64)
Next i
End Sub
在主窗体的激活过程中激活定时器,并设置定时器的Interval属性,程序如下:
Sub Form—Activate ()
Timer1.Interval=3000
′封面存在时间为3秒
Timer1.Enabled=True
′打开定时器
End Sub
载入封面的代码放在主窗体的Load事件中,可以改变鼠标形状以示用户等待。首先在通用过程中声明常量:
Const HWND—TOPMOST=-1
Const SWP—NOMOVE=&H10
Const SWP—NOSIZE=&H40
Const flags=SWP—NOMOVE Or SWP—NOSIZE
使用SetWindowPos函数实现浮动效果:
Sub Form—Load ()
screen.MousePointer=11
′鼠标呈沙漏状
frmface.Show
′显示封面
frmface.Refresh
SetWindowPos frmface.hWnd, HWND—TOPMOST, 0, 0, 0, 0, flags
End Sub
定时器时间到后关闭定时器,同时卸载封面窗体,使用户可以继续操作主窗体。程序如下:
Sub Timer1—Timer ()
frmfirst.Timer1.Enabled=False
′关闭定时器
Unload frmface
′卸载封面
screen.MousePointer=0
′鼠标恢复原样
End Sub
一、封面设计技术
开发者可以选择一些已有的图像文件,或从其它图像处理过程中截取比较满意的图案,也可以制作具有个人风格的封面。在VB中制作封面时,是在一个窗体上使用VB的绘图工具Line和Shape绘制出图形,也可以在窗体内载入一个Picture Box或Image Control,利用Picture Box或Image Control载入自己喜欢的图片来制作封面,同时在图形之上,可以使用Text Box或Label来显示版本信息。
为了使设计的窗体更加象一个封面,可以去除窗体的控制框、标题栏和最大最小化按钮,窗体的大小不允许用户改变。
在封面窗体的属性中,属性Control Box应设为False,Caption应设为空,MaxButton和MinButton应设为False,BorderStyler属性设为1,即固定的单线边界,这样就设计出了一个标准的封面。
2. 浮动窗体
主窗体载入后,激发封面事件(event),使封面窗体成为当前活动窗体,必须保证封面总是浮在主窗体的上面,在VB中可以通过调用Windows的API函数SetWindowpos来实现。SetWindowpos函数的声明如下:
Declare Sub SetWindowPos Lib ″User″ (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer)
其中:hWnd是作为封面窗体的句柄;
hWndInsertAfter 指示为封面窗体前载入的窗体;
X为封?娲疤遄笊辖堑腦坐标;
Y为封面窗体左上角的Y坐标;
cx为窗体新宽度;
cy为窗体新高度;
wFlags影响窗体大小和位置的16位值。
其中,hWndInsertAfter设为HWND—TOPMOST,wFlags设为SWP—NOMOVE (不移动窗体,即忽略cx和cy)或SWP—NOSIZE(不改变窗体大小,即忽略X和Y),就可以实现将HWND标识的窗体置于主窗体之上。
3. 封面卸载
保证主窗体载入完毕后,封面窗体自动卸出。在主窗体中可使用定时器控件,在激活主窗体的Activate事件时激活定时器,设置定时器活动时间属性,在定时器控件的事件Timer中,关闭定时器,卸出封面,释放存储空间,提高软件运行速度。
二、封面设计程序
假设封面窗体名为frmface,主窗体名为frmfirst,其中封面窗体可以用绘图指令绘出。程序中给出了绘制三维窗体的方法,在封面窗体载入过程中,窗体上可根据用户需要绘制三维面板或图片框等。
Sub Form—Load ()
Dim fWidth As Integer
Dim i As Integer, t As Integer, l As Integer
Dim w As Integer, h As Integer
frmface.BackColor=&HC0C0C0
frmface.Left=(screen.Width-Width) / 2
frmface.Top=(screen.Height-Height) / 2
frmface.ScaleMode=3: fWidth=4
frmface.AutoRedraw=-1
For i=1 To fWidth
t=i
l=i
h=scaleheight
w=scalewidth
Line (l, t)-(l, h-i), RGB(255, 255, 255)
Line (l, t)-(w-i, t), RGB(255, 255, 255)
Line (w-l, t)-(w-l, h-t), RGB(64, 64, 64)
Line (l, h-l)-(w-l, h-l), RGB(64, 64, 64)
Next i
End Sub
在主窗体的激活过程中激活定时器,并设置定时器的Interval属性,程序如下:
Sub Form—Activate ()
Timer1.Interval=3000
′封面存在时间为3秒
Timer1.Enabled=True
′打开定时器
End Sub
载入封面的代码放在主窗体的Load事件中,可以改变鼠标形状以示用户等待。首先在通用过程中声明常量:
Const HWND—TOPMOST=-1
Const SWP—NOMOVE=&H10
Const SWP—NOSIZE=&H40
Const flags=SWP—NOMOVE Or SWP—NOSIZE
使用SetWindowPos函数实现浮动效果:
Sub Form—Load ()
screen.MousePointer=11
′鼠标呈沙漏状
frmface.Show
′显示封面
frmface.Refresh
SetWindowPos frmface.hWnd, HWND—TOPMOST, 0, 0, 0, 0, flags
End Sub
定时器时间到后关闭定时器,同时卸载封面窗体,使用户可以继续操作主窗体。程序如下:
Sub Timer1—Timer ()
frmfirst.Timer1.Enabled=False
′关闭定时器
Unload frmface
′卸载封面
screen.MousePointer=0
′鼠标恢复原样
End Sub