




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在VB中制作可滚动的图像显示 摘要:我们在制作多媒体程序时,不可避免的要涉及图像的显示,尽管VB中提 供的picturebox可以显示多种格式的图像文件,但由于没有提供滚动条和缩放功 能,在使用中多有不便。笔者在编制一多媒体程序时,就需要对图像进行缩放显 示。这通常有两种处理办法,一是利用第三方控件,如Windows自带的WANG图像控 件;二是利用VB的picturebox和滚动条控件自行编程实现。本文给出了利用这两 种方法制作的实例。 在VB中制作可滚动的图像显示 我们在制作多媒体程序时,不可避免的要涉及图像的显示,尽管VB中提供的 picturebox可以显示多种格式的图像文件,但由于没有提供滚动条和缩放功能,在 使用中多有不便。笔者在编制一多媒体程序时,就需要对图像进行缩放显示。这通 常有两种处理办法,一是利用第三方控件,如Windows自带的WANG图像控件;二是 利用VB的picturebox和滚动条控件自行编程实现。两种方法各有优缺点,可以根 据需要具体选用。 一,利用第三方控件实现 在“工程”中选取“部件”,将WANG 图像编辑控制添加到工具箱中,并在窗 体中绘制出合适大小,按鼠标右键,选取特性,设置好各种参数后加入程序代码就 行了,使用非常简单,如果需要,在程序中也可加入一定的图像编辑功能。 采用第三方控件,功能较强,程序编制也简单一些,不失为一种好方法。但存 在一些其他问题,比如本文采用的WANG 图像编辑控制,在使用中就经常出现“类 没有注册”的错误,解决此问题,要么修改注册表,要么重装系统,很麻烦,所以 在要求的功能不是很多的情况下,用第二种方法比较合适。以下就是使用WANG控 件的程序,可以看出,代码很简单。 Private Sub imgedit1_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode 定义功能键,+,-用以缩放图像 Case vbKeyAdd ImgEdit1.Zoom=imgedit1.zoom*1.2 Case vbKeySubtract ImgEdit1.Zoom=imgedit1.zoom/1.2 End Select ImgEdit1.Refresh End Sub Private Sub Form_Resize() ImgEdit1.Top = 0 ImgEdit1.Left = 0 ImgEdit1.Height = Form1.ScaleHeight ImgEdit1.Width = Form1.ScaleWidth End Sub Private Sub Form_Load() imgedit1.image=a:ddd.jpg ImgEdit1.ImagePalette = 3 ImgEdit1.Display End Sub 二是利用VB的picturebox和滚动条控件编程实现 PICTUREBOX控件能支持许多种图像格式,但没有缩放功能并且不自动添加滚 动条,所以必须自行编程实现。 应用程序使用两个图片框,一个作为包容器,可称之为父图片框,另一个作 为子图片框显示图形,配合滚动条控件在父图片框内移动子图片框就可实现画面 的滚动。 VB中提供了paintpicture方法,可以在窗体、图片框上的任何地方绘制图 形,语法为 object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode,其中x1,y1为指定在 object 上绘制 picture 的目标坐标;width1,height1 指定 picture 的目标宽度和高度;x2,y2指定 picture 内剪贴区的坐标 width2,height2 指定 picture 内剪贴区的源宽度和高 度,当我们重新设定width1,height1时,就可以在子图片框内实现平滑的缩放图 片。虽然Paintpicture可以代替bitblt windows API函数,但没有API的执行 速度快,如程序对速度的要求比较高,可用API函数代替paintpicture方法 。 在窗体中先画出picture1作为父图片框,然后在其中中画出picture2,在窗 体中再画出滚动条,picture2的autosize属性为TRUE,borderstyle属性为0, autoredraw属性为true,滚动条的largechange和smallchange属性设为合适大 小,窗体既设置完毕。 以下为可以直接使用的完整程序,可以用光标键移动画面,也可以拖放方式 移动画面;用加减号缩放画面。 Public c1, c2, c3, c4 As Integer Public tf, d1, d2, d3, d4, blf As Integer Public yk, yg As Long Private Sub Form_Load() c1 = Form1.Width c2 = Form1.Height blf = 100 Picture2.Picture = LoadPicture(a:ddd.jpg) yk = Picture2.Width yg = Picture2.Height End Sub Private Sub Form_Resize() If Width 1500 And Height 1170 Then c3 = Form1.Width - c1 c4 = Form1.Height - c2 Picture1.Move Picture1.Left, Picture1.Top, Picture1.Width + c3, Picture1.Height + c4 c1 = Form1.Width c2 = Form1.Height Call p End If Picture2.SetFocus End Sub 以拖放方式滚动画面 Private Sub Picture2_DragDrop(Source As Control, x As Single, y As Single) If Picture2.Height Picture1.Height Then 通过计算鼠标移动位置,调用vscroll_change事件 cccc = VScroll1.Value + (d2 - y) 移动画面 If cccc = VScroll1.Max Then cccc = VScroll1.Max End If VScroll1.Value = cccc End If If Picture2.Width Picture1.Width Then cccc1 = HScroll1.Value + (d1 - x) If cccc1 = HScroll1.Max Then cccc1 = HScroll1.Max End If HScroll1.Value = cccc1 End If End Sub 设置功能键,光标键移动画面,加减号缩放画面 Private Sub Picture2_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyLeft HScroll1.Value = IIf(HScroll1.Value - HScroll1.SmallChange Picture1.Width Then HScroll1.Value = IIf(HScroll1.Value + HScroll1.SmallChange HScroll1.Max, HScroll1.Max, HScroll1.Value + HScroll1.SmallChange) End If Case vbKeyUp VScroll1.Value = IIf(VScroll1.Value - VScroll1.SmallChange Picture1.Height Then VScroll1.Value = IIf(VScroll1.Value + VScroll1.SmallChange VScroll1.Max, VScroll1.Max, VScroll1.Value + VScroll1.SmallChange) End If Case vbKeyAdd If blf 50 Then blf = blf - 25 Call fs(blf) End If End Select End Sub Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) d1 = x d2 = y Picture2.Drag 1 Set Picture2.DragIcon = LoadPicture(a:plane.ico) End Sub Sub p()画面和滚动条重设置程序 Picture2.Move 0, 0 HScroll1.Top = Picture1.Height + Picture1.Top HScroll1.Left = Picture1.Left HScroll1.Width = Picture1.Width VScroll1.Top = Picture1.Top VScroll1.Left = Picture1.Width + Picture1.Left VScroll1.Height = Picture1.Height HScroll1.Max = (Picture2.Width - Picture1.Width) VScroll1.Max = (Picture2.Height - Picture1.Height) VScroll1.Visible = (Picture1.Height Picture2.Height) HScroll1.Visible = (Picture1.Width VScroll1.Max, VScroll1.Max, VScroll1.Value * bl) End If If HScroll1.Visible Then HScroll1.Value = IIf(HScroll1.Value * bl HScroll1.Max, HScroll1.Max, HScroll1.Value * bl) End If Form1.MousePointer = vbDefault End Sub 本文的两例程序均在VB5.0中使用通过。首先给工程(Project)添加一个OCX控件,单击“工程” 菜单项,在弹出的下拉菜单中点击“组件”,选中其中的“Microsoft Common Dialog Control 5.0”,确定完成加载工作;然后画一个PictureBox,采用VB提供的默认名字Picture1,再在Picture1上面画一个PictureBox,默认名字为Picture2,注意别忘了设置Picture2.AutoSize=TRUE;接着,加上水平和垂直滚动条,默认名字分别为HScroll1和VScroll1;以后加载图形到Picture2上就可以了;最后,在窗体中引入其他控件:一个按钮(Command),默认名为Command1和一个“Microsoft Common Dialog Control”,默认名为CommonDialog1。具体VB代码如下: Private Sub Form_Load() Picture2.Left = 0 Picture2.Top = 0 Picture2.Width = Picture1.Width Picture2.Height = Picture1.Height VScroll1.Min = 0 HScroll1.Min = 0 HScroll1.Min = 0 VScroll1.Max = Picture2.Height - Picture1.Height HScroll1.Max = Picture2.Width - Picture1.Width If HScroll1.Max 0 Then HScroll1.Enabled = False If VScroll1.Max 0 Then VScroll1.Enabled = False End Sub Private Sub Command1_Click() On Error GoTo ErrExit CommonDialog1.FilterIndex = 1 CommonDialog1.ShowOpen Picture2.Picture = LoadPicture(CommonDialog1.FileName) VScroll1.Min = 0 HScroll1.Min = 0 VScroll1.Max = Picture2.Height - Picture1.Height HScroll1.Max
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考公司法-心理学参考题库含答案解析(5卷)
- 2025年学历类自考公司法-写作(一)参考题库含答案解析(5卷)
- 2025年学历类自考互联网数据库-管理系统中计算机应用参考题库含答案解析(5卷)
- 山东省滕州市第一中学2025年英语高三上期末联考模拟试题
- 2025年学历类自考专业(金融)银行会计学-证券投资与管理参考题库含答案解析(5卷)
- 2025年学历类自考专业(计算机网络)软件开发工具-工程经济参考题库含答案解析(5卷)
- 2025年学历类自考专业(计算机网络)计算机网络原理-软件开发工具参考题库含答案解析(5卷)
- 商业贷款合作协议
- 2025年学历类自考专业(计算机网络)信息系统开发与管理-网络操作系统参考题库含答案解析(5卷)
- 2025年学历类自考专业(计算机网络)Java语言程序设计(一)-信息系统开发与管理参考题库含答案解析(5卷)
- 湘教版小学信息技术三年级上册教案(打印)
- 小学生演讲与口才社团
- 财务决策实训课件
- 个人能力展示
- 尿红细胞形态分析报告
- 网络产品行业报告
- 中药热奄包在皮肤瘙痒中的临床应用观察
- 2023年佛山市招聘警务辅助人员考试真题及答案
- 疾控中心培训课件:《白喉的采样及实验室检测技术》
- 20道云南白药销售代表岗位常见面试问题含HR常问问题考察点及参考回答
- 花篮拉杆式悬挑脚手架工程技术交底
评论
0/150
提交评论