用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧VisualBasic

用VisualBasic窗体背景花纹的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 19:49:28

我 们 在 开 发 软 件 过 程 中, 为 提 高 软 件 的 商 品 化 程 度, 
感 觉 到 界 面 的 美 观 程 度 是 一 个 软 件 能 否 获 得 成 功 的 一 个 重 要 因 素,
我 们 仔 细 研 究 了 一 些 成 功 的 商 品 化 软 件, 从 这 些 软 件 上 可 以 看 到,
程 序 窗 口 背 景 能 显 示 出 非 常 美 丽 的、 富 有 立 体 感 的 花 纹。
而 采 用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 = 3Form1.ScaleMode = 3picture1.Picture = LoadPicture(pictfile)''网格控件覆盖整个窗体背景grid1.Top = -1grid1.Left = -1grid1.Width = Widthgrid1.Height = Heightgrid1.Cols=Int(Form1.ScaleWidth/picture1.ScaleWidth) + 1grid1.Rows=Int(Form1.ScaleHeight/picture1.ScaleHeight) + 1''所有单元大小等于基本图案大小For I = 0 To grid1.Cols - 1For j = 0 To grid1.Rows - 1grid1.ColWidth(I) = picture1.ScaleWidth * 15grid1.RowHeight(j) = picture1.ScaleHeight * 15Next jNext I''选定所有单元grid1.SelStartCol = 0grid1.SelStartRow = 0grid1.SelEndCol = grid1.Cols - 1grid1.SelEndRow = grid1.Rows - 1grid1.Picture = Picture1.PictureEnd Sub6. 窗 体 主 程 序 Private Sub Form_Load()Private Sub Form_Load()''得到运行程序路径名,路径名后带反斜杠If Right(App.Path, 1) <> "\" ThenfilePath = App.Path & "\"ElsefilePath = App.PathEnd If''窗体初始显示由Tiles.bmp基本图案组成的背景pictfile = "c:\windows\Tiles.bmp"backpict (pictfile)End Sub7. 退出程序命令按钮 Private Sub SSCommand1_Click()EndEnd Sub8. 演示不同的底纹图案 Private Sub SSCommand2_Click()''两种背景图案交替演示If pictfile = filePath & "Pict1.bmp" Thenpictfile = "c:\windows\Tiles.bmp"Elsepictfile = filePath & "Pict1.bmp"End IfBackpict (pictfile)End Sub

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:18,578.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号