惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
量子位
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - Franky
美团技术团队
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
罗磊的独立博客
Jina AI
Jina AI
小众软件
小众软件
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
博客园 - 聂微东
博客园_首页
The Cloudflare Blog
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队

博客园 - TangHuawei

設置RichTextBox行距 - TangHuawei - 博客园 新的一年又开始了 C#.NET windows控件实现水印 C#纯数学方法递归实现货币数字转换中文 移动没有标题栏的窗口 - TangHuawei - 博客园 让程序更智能-自动选择功能的实现 - TangHuawei - 博客园 让复选框生动起来 用VB实现局域网屏幕监视 如何在VB6中实现文字“打屏”及霓虹灯效果 - TangHuawei - 博客园 用VB“破解”有时间限制的程序 用VB5 Winsock控件创建TCPIP客户机 服务器程序 用VB产生随机密码 用vb开发通信软件 用VB设计基于代理服务器的网络计费系统 用VB设计能适应各种显示属性的界面 用VB实现彩蝶飞舞 游动的窗体 有历史记录功能的菜单 远程共享显示及声音的实现
用VB设计软件封面
TangHuawei · 2007-01-12 · via 博客园 - TangHuawei

对于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