首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> JAVA >> 正文
Visual Basic窗体背景花纹的实现
来源:ChinaItLab 作者:佚名 时间:2007-4-4

  我们在开发软件过程中,为提高软件的商品化程度,感觉到界面的美观程度是一个软件能否获得成功的一个重要因素,我们仔细研究了一些成功的商品化软件,从这些软件上可以看到,程序窗口背景能显示出非常美丽的、富有立体感的花纹。而采用Visual Basic 3.0或4.0进行窗体设计,若只按照系统提供的功能,只能从有限的几种颜色中选择一种颜色或采用程序绘制一些简单的线条。而想实现立体感很强的纹理图案,一般只能采用窗体的PICTURE属性调用位图文件,使用这种方法实现有许多缺点 ,其一是窗体大小受位图大小的限制,调整起来麻烦,不具有通用性和灵活性;其二是浪费资源,因为花纹图案基本上是重复图案,采用与窗体同样大小的位图是一种浪费。
  
  下面介绍一种窗体背景花纹实现的方法。在窗体上建立一个网格控件,设定网格行不可见,去掉固定行和固定列,用程序实现网格控件与窗体同样大小,并随窗体大小的改变而改变。然后设计一个花纹图案,形成BMP位图文件(本文程序使用文件Pict1.bmp),或者从其它图象中截取一段图案,也可以利用Windows系统提供的图案(如c:\windows\Tiles.bmp),将其调入Picture控件。设定网格的每个单元与该图案大小相同,使单元的数量正好覆盖整个窗体背景,再将所有单元均显示该图案。通过子程序Backpict()实现以上过程,不论图案大小、窗体大小,程序都能自动调整网格控件大小和网格单元大小及单元数量。该程序在Visual Basic 4.0上调试成功。
  
  1.新建窗体Form1,属性如下:
  
  Caption =“背景花纹的实现”
  
  Borderstyle=3(无最大、最小化按钮)
  
  2.建网格控件Grid1,它的位置和大小将在程序中设置(与Form1同样大),属性为:
  
  Enabled = False(焦点不会落在网格控件Grid1上)
  
  Fillstyle=1(改变所有单元Text特性)
  
  Fixedcols=0(无固定行)
  
  Fixedrows=0(无固定列)
  
  Gridlines = False(网格行不可见),
  
  Visible = True
   
  3.建立图象控件Picture1,程序运行时将背景花纹基本图案放入其中,属性为
  
  Visible = False(不可见)
  
  Autosize = True(自动调整大小)
  
  4.控件中加入Sheridan 3D Controls,选取其中的三维命令按钮SSCommand,建立两个按钮
  
  SSCommand1.Caption=“退出”
  
  SSCommand2.Caption=“更换背景”(演示不同的背景图案)
  
  它们的属性Picture可调用与背景相同或不同的图案,如果使用普通的命令按钮控件Command也可,只是命令按钮无背景图案。
  
  5.建立背景图案形成子程序:
  
  Dim pictfile As String '位图文件名
  
  Dim FILEPATH As String '文件路径
  
  Sub Backpict(pictfile)
  
  picture1.ScaleMode = 3
  
  Form1.ScaleMode = 3
  
  picture1.Picture = LoadPicture(pictfile)
  
  '网格控件覆盖整个窗体背景
  
  grid1.Top = -1
  
  grid1.Left = -1
  
  grid1.Width = Width
  
  grid1.Height = Height
  
  grid1.Cols=Int(Form1.ScaleWidth/picture1.ScaleWidth) + 1
  
  grid1.Rows=Int(Form1.ScaleHeight/picture1.ScaleHeight) + 1
  
  '所有单元大小等于基本图案大小
  
  For i = 0 To grid1.Cols - 1
  
  For j = 0 To grid1.Rows - 1
  
  grid1.ColWidth(i) = picture1.ScaleWidth * 15
  
  grid1.RowHeight(j) = picture1.ScaleHeight * 15
  
  Next j
  
  Next I
  
  '选定所有单元
  
  grid1.SelStartCol = 0
  
  grid1.SelStartRow = 0
  
  grid1.SelEndCol = grid1.Cols - 1
  
  grid1.SelEndRow = grid1.Rows - 1
  
  grid1.Picture = Picture1.Picture
  
  End Sub
  
  6.窗体主程序
  
  Private Sub Form_Load()
  
  Private Sub Form_Load()
  
  '得到运行程序路径名,路径名后带反斜杠
  
  If Right(App.Path, 1) <> "\" Then
  
  filePath = App.Path & "\"
  
  Else
  
  filePath = App.Path
  
  End If
  
  '窗体初始显示由Tiles.bmp基本图案组成的背景
  
  pictfile = "c:\windows\Tiles.bmp"
  
  backpict (pictfile)
  
  End Sub
  
  7.退出程序命令按钮
  
  Private Sub SSCommand1_Click()
  
  End
  
  End Sub
  
  8.演示不同的底纹图案
  
  Private Sub SSCommand2_Click()
  
  '两种背景图案交替演示
  
  If pictfile = filePath & "Pict1.bmp" Then
  
  pictfile = "c:\windows\Tiles.bmp"
  
  Else
  
  pictfile = filePath & "Pict1.bmp"
  
  End If
  
  Backpict (pictfile)
  
  End Sub
【责编:landss】
中国IT教育热线咨询
相关文章
Visual Basic构建线程安全的Singleton…
Java中消除实现继承和面向接口编程
实现Java平台的三种方式
Delphi中用API实现在MSN的信息提示
利用C#实现标注式消息提示窗口
如何用Delphi实现子目录级的文件查询
如何使用Delphi实现无边界窗体的移动
C#和Visual Basic中的闭包与对象生存时期…
用纯JAVA语言编程读取MAC地址的实现
用Visual C#实现网络封包监视…
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05