好贷网好贷款

创建可滚动的图形视口

发布时间:2016-12-4 9:56:06 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"创建可滚动的图形视口",主要涉及到创建可滚动的图形视口方面的内容,对于创建可滚动的图形视口感兴趣的同学可以参考一下。

Scroll Bar 控件方案:创建可滚动的图形视口 除了 PictureBox 控件之外,也可用水平、垂直滚动条创建可滚动的图形视口应用程序。当所包含的图形超过控件范围时,单独一个 PictureBox 控件无法实现滚动功能─ 因为 PictureBox 控件不能自动添加滚动条。 应用程序使用两个图片框。称第一个为平稳的父 PictureBox 控件。称第二个为子 PictureBox 控件,它包含在父图片框中。子图片框中包含图形图象,可用滚动条控件在父图片框中移动子图片框。 图 7.25   在设计时添加滚动条控件 如图 7.28 所示,先创建一个新工程,然后在窗体上绘制两个图片框、一个水平滚动条和一个垂直滚动条。 这里,用窗体的 Form_Load 事件设置比例模型,在父图片框中调整子图片框的大小,水平、垂直滚动条将定位并调整它们的大小,然后加载位图图形。将下列代码添加到窗体的 Form_Load 事件过程中: Private Sub Form_Load() '设置 ScaleMode 为像素。 Form1.ScaleMode = vbPixels Picture1.ScaleMode = vbPixels '将 Autosize 设置为 True,以使 Picture2 的边界 '扩展到实际的位图大小。 Picture2.AutoSize = True '将每个图片框的 BorderStyle 属性设置为 None。 Picture1.BorderStyle = 0 Picture2.BorderStyle = 0 '加载位图。 Picture2.Picture = _ LoadPicture("c:/Windows/Winlogo.bmp") '初始化两个图片框的位置。 Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _ ScaleHeight - HScroll1.Height Picture2.Move 0, 0 '将水平滚动条定位。 HScroll1.Top = Picture1.Height HScroll1.Left = 0 HScroll1.Width = Picture1.Width '将垂直滚动条定位。 VScroll1.Top = 0 VScroll1.Left = Picture1.Width VScroll1.Height = Picture1.Height '设置滚动条的 Max 属性。 HScroll1.Max = Picture2.Width - Picture1.Width VScroll1.Max = Picture2.Height - Picture1.Height '判断子图片框是否将充满屏幕。 '若如此,则无需使用滚动条。 VScroll1.Visible = (Picture1.Height < _ Picture2.Height) HScroll1.Visible = (Picture1.Width < _ Picture2.Width) End Sub 水平和垂直滚动条的 Change 事件用来在父图片框中上、下、左、右移动子图片框。请将下列代码添加到两个滚动条控件的 Change 事件中: Private Sub HScroll1_Change() Picture2.Left = -HScroll1.Value End Sub Private Sub VScroll1_Change() Picture2.Top = -VScroll1.Value End Sub 将子图片框的 Left 和 Top 属性分别设置成水平和垂直滚动条数值的负值,这样,当上、下、左、右滚动时,图形可正确地移动。 运行时,显示的图形如图 7.26 所示。 图 7.26   运行时滚动位图 运行时调整窗体大小 在上例中,窗体的初始大小限制图形的可视大小。在运行时当用户调整窗体大小时,为了调整图形视口应用程序的大小,可将下列代码添加到窗体的 Form_Resize 事件过程中: Private Sub Form_Resize() '调整窗体大小时,改变 Picture1 '的尺寸。 Picture1.Height = Form1.Height Picture1.Width = Form1.Width '重新初始化图片和滚动条的 '位置。 Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _ ScaleHeight - HScroll1.Height Picture2.Move 0, 0 HScroll1.Top = Picture1.Height HScroll1.Left = 0 HScroll1.Width = Picture1.Width VScroll1.Top = 0 VScroll1.Left = Picture1.Width VScroll1.Height = Picture1.Height HScroll1.Max = Picture2.Width - Picture1.Width VScroll1.Max = Picture2.Height - Picture1.Width '检查是否需要滚动条。 VScroll1.Visible = (Picture1.Height < _ Picture2.Height) HScroll1.Visible = (Picture1.Width < _ Picture2.Width) End Sub  

上一篇:Sqlite中文排序研究
下一篇:

相关文章

相关评论