




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 J I A N G S U U N I V E R S I TY本 科 毕 业 论 文 绘图软件开发Develop the painting software 摘要提起Windows中的画笔,恐怕使用过计算机的人谁都知道?虽然其绘图功能无法与专业的绘图软件相提并论,但也能够应付用户日常绘图的需求。本文主要利用Visual Basic6.0开发平台,通过调用Windows的Api函数GDI的方法,开发出的如“画笔”一样的软件。本文研究了图形绘制的基本方法函数及其相关技术,讨论了VB系统的特性,详细地阐述了绘图的基本理论及其开发设计思想,程序的各个功能模块的设计思想、实现过程、主要算法和系统特点
2、。通过本系统的开发设计,大大提高了自己的图形系统的设计能力。本软件具有可视化的操作界面,人性化的操作环境,功能齐全,操作简单易懂。 关键字:绘图、Windows、GDI、VB 6.0AbstractorBring up the paintbrush in the Windows, afraid of to use the person of the calculator who all know? Although it paint function cant with profession of painting software place on equal footing, also c
3、an cope with the need that the customer paints usually. The continuation introduces to make use of the Visual Basic6.0 development terraces, pass the method of adjust the Api function GDI of use the Windows, develop of such as similar software of paintbrush.This text studied basic method function an
4、d its related techniques that sketch draw, discussing the characteristic of the system of VB, elaborating the basic theories of the painting in detail and it develops the design thought, the design thought of the each function mold piece of the procedure, carry out the process, main calculate way an
5、d system characteristicses.Pass the development design of this system, improve the design ability of own sketch system consumedly.This software has the operation interface that can see to turn, humanized operation environment, the function is well-found, operating to understand in brief and easilyKe
6、y Words: Draw、Windows、GDI、VB 6.0目录目录4第一章 绪论与系统需求51.1、设计目的51.2、用户特征51.3、运行环境51.4、外部接口需求61.5、功能需求61.6、vb平台开发图形软件分析6、vb图形开发的弱点6、api函数介绍7、vb中api函数的使用7、使用消息(Messages)8、vb中坐标系的介绍9第二章 系统设计与实现102.1、系统功能设计102.2、详细设计11、软件结构11、详细模块设计过程。12第三章 关键实现技术173.1 镜像与旋转的实现技术173.2 放缩操作实现183.3 清除当前画板183.4 打印输出与壁纸设置193.5 剪切
7、板操作193.6 图形绘制21第四章 系统测试23第五章 总结25参考文献27致谢28附录 程序代码与实现29 第一章 绪论与系统需求1.1、设计目的随着社会发展的不断进步,通过计算机来处理图形、图象已经成为日常工作中的一个不可或缺的手段,计算机处理图象有着无可比拟的优点,现在的美术、装潢、设计等那个能离开的了先进的计算机处理?现在先进的计算机图形、图象软件也层出不穷,大到名闻遐迩的PHOTOSHOP、COREDRAW,小至WINDOWS中附带的画笔。本文试着模仿画笔,来领会学习WINDOWS中图形、图象的处理程序的编制技巧,理解GDI函数的强大功能,希望能通过本次毕业设计来推开图形处理的层层
8、迷雾,揭开其神秘的面纱,能窥视到图形处理软件编制的一点秘诀。为将来进一步深入其中打下一定的基础。1.2、用户特征使用本软件的用户人群非常广泛,它非常适用于具有如下特点的人员:l 工作中需要一些简单的图形绘制;l 需要浏览一些图形、图象;l 通过画笔来修改一些图形,修饰图象;针对如上用户特点,本软件可以迅捷、准确、方便地通过绘图根据温和调色板来绘制图形,同时可以通过打开菜单来浏览图象,同时力求为用户提供方便、高效、实用的功能。1.3、运行环境l 硬件环境pentiumII或更高档微机,笔记本电脑;运行时内存要求:1MB;安装所需硬盘:1MB;l 软件环境简体中文版Windows98/2000/x
9、p操作系统1.4、外部接口需求a、用户界面采用Windows的通用图形界面,对用户友好,且必须对鼠标和键盘提供支持,界面设计应遵循如下规则:界面要具有一致性,界面规范就遵循MS Windows软件界面的规范;提供简单的错误处理;提供信息反馈,用多种信息提示用户当前软件运行状态;b、硬件接口支持一般的PentiumII或更高档微机,笔记本电脑;c、软件接口运行于Windows98、2000、xp操作系统;d、故障处理正常使用不应出错,运行时遇到不可恢复的系统错误时,也必须保证电脑不死机,不影响其他的程序。1.5、功能需求画笔程序应该包括1.工具箱2.调色板3.反色功能4.翻转/旋转功能5.减切,
10、复制,粘贴功能6.新建、打开、保存功能7.帮助功能等。1.6、vb平台开发图形软件分析1.6.1、vb图形开发的弱点就本质上来讲,vb本身提供了极少量的图形控件,如:图片框、图象框、line、shape控件,还包含了为数不多的图形处理函数,如:pset、line、circle等。假如用这些工具来处理简单的图形,但是假如用他来编写一个麻雀虽小、五胀俱全的画笔程序,单靠以上这些,那就太勉为其难了,所以必须寻找图形方面的扩展,winapi函数调用提供了一个很好的帮助。1.6.2、api函数介绍API是应用程序编程接口(ApplicationProgrammingInterface)的缩写,是一套用来
11、控制Windows的各个部件(从桌面的外观到一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么. 这也就是说,用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print.VB将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut这个API函数. 同样,当你点击窗体上的一个按时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(button_ click).API函数包含在Windows系统目录下的
12、动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll.).1.6.3、vb中api函数的使用VB提供了一种更简单的方法,即使用API Text Viewer。要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.),选择声明,找到所需函数,点击添加(Add)并复制(Copy),然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法. 可能存在的一些问题: a、假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误.D
13、eclare 语句不允许作为类或对象模块中的 Public 成员.看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function.).-不要忘了,可是这将使该函数只在该窗体模块可用. b. 可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.1.6.4、使用消息(Messages)知道什么是API函数,也得说说什么是消息(如果你还没有,你很快就会)。消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.
14、 所有发送的消息都有四个参数-一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数. hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置) 但是,当消息发送给你时为什么看不到? Visual Basic在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).这样,当在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMov
15、e中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).现在,如果需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB好意地进行了转换而使你不得不重新转换.能自己接收消息。你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能
16、会导致VB崩溃!)需要补充说明的是:可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数.1.6.5、vb中坐标系的介绍a、 坐标系统在VB中,每个对象定位于存放它的容器内,对象定位都要使用容器的坐标系。VB为对象的定位提供了Left、T
17、op、Width和Height四项属性:Left和Top属性 对象左上角在容器内的坐标位置。Width和Height属性 对象的大小,与容器的度量单位相同。每个容器都有一个坐标系,容器坐标系的默认设置是:容器的左上角为坐标原点(0,0),横向向右为X轴的正向,纵向向下为Y轴的正向。坐标度量单位由容器对象的ScaleMode属性决定。缺省时为Twip。每英寸1440个Twip,20个Twip为一磅(Point)。自行定义坐标系b、重定义坐标原点属性ScaleTop,ScaleLeft的值用于控制对象左上角坐标,所有对象的ScaleTop,ScaleLeft属性的缺省值为0,坐标原点在对象的左上角
18、。ScaleLeft= N,表示将X轴向Y轴的负方向平移N个单位ScaleTop= +N,表示X轴向Y轴的正方向平移N个单位同样,ScaleLeft的设置值可向左或向右平移坐标系的Y轴。C、重定义坐标轴方向和度量单位属性ScaleWidth,ScaleHeight的值可确定对象坐标系X轴与Y轴的正向及最大坐标值。缺省时其值均大于0,此时,X轴的正向向右,Y轴的正向向下。对象右下角坐标值为(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。如果ScaleWidth的值小于0,则X轴的正向向左,如果ScaleHeight的值小于0,则Y轴的正向向上。d、利用Sc
19、ale方法设置坐标系对象 .Scale(xLeft,yTop)-(xRight,yBottom)第二章 系统设计与实现2.1、系统功能设计根据设计需求,我们设计的画笔程序应该包括1.工具箱2.调色板3.反色功能4.翻转/旋转功能5.减切,复制,粘贴功能6.新建、打开、保存功能7.帮助功能等。其中工具箱提供主要的图形绘制和图形编辑的功能,调色板主要提供用户选取颜色和设置当前颜色的功能,另外还提供图象反色、反转旋转功能,以及剪切板功能和文件操作功能。其主要用例图如下:图 2-1 基本用例图在此基础上可以规划其模块图如下:图 2-2 模块结构图2.2、详细设计根据上述设计结果,我们选用VB 6.0进
20、行实现,同时引入了事件编程思想予以实现。其基于消息的软件结构如图2-3所示。、软件结构初始化消息循环非正常退出文件编辑查看图象颜色帮助退出图2-3 基于消息的层次方块图、详细模块设计过程。1、启动VB,创建一个“工程1”项目。然后添加一个MDIFORM窗体,如图24:图24MDIFORM窗体a、为MDI设置菜单,打开菜单编辑器,如下图图25设计:图25菜单编辑器就像你见到的所有Windows程序一样,包括:文件(新建、打开、保存、关闭、打印、退出)、编辑(复制、粘贴等)、查看(工具箱,颜料盒)、图象(旋转、反色、属性)、颜色(编辑颜色)、帮助(帮助、关于版本信息)并一一配置快捷键。b、为MDI
21、FORM窗体添加和设置各种控件和属性设置一个通用对话框控件(Commondialog1)、一个状态条(StatusBar1)。在状态条中第一栏加入内容“要获得帮助,请在帮助菜单中单击帮助主题”时间。完成界面如图2-6所示。图26帮助菜单c、为各菜单添加事件代码如下:新建菜单清除当前画板打开新文件Private Sub open_Click()a = MsgBox(是否保存文件?, vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDial
22、og1.FileNameIf f$ ThenEnd IfEnd IfOn Error Resume NextCommonDialog1.Filter = bmp文件|*.bmp|jpg文件|*.jpg|所有文件|*.*编辑颜色菜单自定义颜色Private Sub m5_Click()CommonDialog1.ShowColorEnd Sub退出菜单退出程序Private Sub exit_Click()a = MsgBox(是否保存文件?, vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonD
23、ialog1.Action = 2f$ = CommonDialog1.FileNameIf f$ ThenEnd IfEnd Ifdl = DeleteObject(newbrush)dl = DeleteObject(oldbrush)End2、添加设计FORM1窗体,如图27FORM1窗体该窗体作为绘图区域,主要完成图形的绘制,图象的显示。在窗体的通用部分声明如代码,为下面的绘图函数的调用做说明。3、关于固定图形的绘制“画笔”能够在图纸的任意地方画出直线、虚线、空心圆、实心圆、矩形、多边形等。我在此程序中也加入了这一功能。MDIPaint窗体上那一排(共14个)小图标,它们就是为画固定图
24、形而设置的。例如:当我点击任一类型的填充圆后,在Picture1中左键按下的坐标会被记录下来:startx、starty。然后按住左键移动鼠标,这时程序会监测左键的状态,一旦左键松开,便将此时新的坐标值写入endx及endy。程序又转到绘图函数中,以(startx,starty)为圆心,以(sqr(startxendx)2(startyendy)2)为半径,以预先设定的填充状态(FillStyle)及颜色(如前景色)画出一个你所希望得到的填充圆。其它固定图形的绘制方法皆大同小异。第三章 关键实现技术3.1 镜像与旋转的实现技术(1) 水平翻转Picture1.PaintPicture Pict
25、ure1.Picture, Picture1.ScaleWidth, 0, 1 Picture1.ScaleWidth, Picture1.ScaleHeight (2) 垂直翻转Picture1.PaintPicture Picture1.Picture, 0, Picture1.ScaleHeight, Picture1.ScaleWidth, 1 Picture1.ScaleHeight(3) 旋转Sub bmp_rotate(pic1 As PictureBox, pic2 As PictureBox, ByVal theta!) Dim c1x As Integer, c1y As
26、Integer Dim c2x As Integer, c2y As Integer Dim a As Single Dim p1x As Integer, p1y As Integer Dim p2x As Integer, p2y As Integer Dim n As Integer, r As Integer c1x = pic1.ScaleWidth 2 c1y = pic1.ScaleHeight 2 c2x = pic2.ScaleWidth 2 c2y = pic2.ScaleHeight 2 If c2x c2y Then n = c2y Else n = c2x n = n
27、 - 1 pic1hDC% = pic1.hDC pic2hDC% = pic2.hDC对点象素的操作 For p2x = 0 To n For p2y = 0 To n If p2x = 0 Then a = Pi / 2 Else a = Atn(p2y / p2x) r = Sqr(1& * p2x * p2x + 1& * p2y * p2y) p1x = r * Cos(a + theta!) p1y = r * Sin(a + theta!) c0& = GetPixel(pic1hDC%, c1x + p1x, c1y + p1y) c1& = GetPixel(pic1hDC%
28、, c1x - p1x, c1y - p1y) c2& = GetPixel(pic1hDC%, c1x + p1y, c1y - p1x) c3& = GetPixel(pic1hDC%, c1x - p1y, c1y + p1x) If c0& -1 Then xret& = SetPixel(pic2hDC%, c2x + p2x, c2y + p2y, c0&) If c1& -1 Then xret& = SetPixel(pic2hDC%, c2x - p2x, c2y - p2y, c1&) If c2& -1 Then xret& = SetPixel(pic2hDC%, c2
29、x + p2y, c2y - p2x, c2&) If c3& -1 Then xret& = SetPixel(pic2hDC%, c2x - p2y, c2y + p2x, c3&) Next t% = DoEvents() Next End Sub3.2 放缩操作实现(1) 缩 小Picture1.PaintPicture Picture1, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.ScaleWidth, Picture1.ScaleHeight (2) 放 大Picture1.PaintPicture Pict
30、ure1, Picture1.ScaleWidth, Picture1.ScaleHeight, 2 Picture1.ScaleWidth, 2 Picture1.ScaleHeight 3.3 清除当前画板清除当前画板以打开新文件的形式予以实现,程序代码如下Private Sub clear_Click()a = MsgBox(是否保存文件?, vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDialog1.FileNameIf f
31、$ ThenEnd IfEnd If重置End Sub3.4 打印输出与壁纸设置(1)打印输出打印操作Private Sub m1b8_Click(Index As Integer)Printer.Print Form1.Picture1End Sub(2) 壁纸设置设置为壁纸(居中-拉伸)菜单设置为壁纸(居中-拉伸)Private Sub m1b9_Click()f$ = back.bmpIf f$ ThenEnd If调用api函数Dim ChangeWPChangeWP = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, back.bmp, 0
32、)MsgBox 壁纸设定完毕(居中-拉伸) & vbCrLf & & vbCrLf & UCase$(back.bmp) & vbCrLf & , 64, 设定为壁纸End Sub3.5 剪切板操作(1) 图形剪切Private Sub cut_Click()确定有选择If Selected = 1 Thenxxx = small(Selectx1, Selectx2)xwidth = Abs(Selectx2 - Selectx1)yyy = small(Selecty1, Selecty2)yheight = Abs(Selecty2 - Selecty1)将剪切图形保存在缓冲图形框中,并
33、用底色填充选择区域Stored = 1End IfEnd Sub(2) 图形复制Private Sub copy_Click()确定有选择If Selected = 1 Thenxxx = small(Selectx1, Selectx2)xwidth = Abs(Selectx2 - Selectx1)yyy = small(Selecty1, Selecty2)yheight = Abs(Selecty2 - Selecty1)将剪切图形保存在缓冲图形框中Stored = 1End IfEnd Sub(3) 粘贴操作Private Sub plst_Click()If Stored = 1
34、 ThenIf Selected = 1 Then确定粘贴的数值xxx = small(Selectx1, Selectx2)xwidth = Abs(Selectx2 - Selectx1)yyy = small(Selecty1, Selecty2)yheight = Abs(Selecty2 - Selecty1)在picture控件上粘贴If xwidth 3 Or yheight 3 ThenElseEnd IfElseEnd IfEnd IfEnd Sub3.6 图形绘制下面以矩形绘制为例,介绍图形绘制方法。画矩形:鼠标左键是前景颜色,鼠标右键是背景颜色index=0 画空心形in
35、dex=1 画实心形index=2 画无边实心形If Huabi = 4 And Button = 1 And lindex.Caption = 0 ThenPicture1.Line (x1, y1)-(x2, y2), Curcolor, BShape2.Visible = FalseEnd IfIf Huabi = 4 And Button = 1 And lindex.Caption = 1 ThenPicture1.Line (x1, y1)-(x2, y2), Curcolor, BShape2.Visible = FalseEnd IfIf Huabi = 4 And Butto
36、n = 1 And lindex.Caption = 2 ThenPicture1.Line (x1, y1)-(x2, y2), Curbkcolor, BShape2.Visible = FalseEnd IfIf Huabi = 4 And Button = 2 And lindex.Caption = 0 ThenPicture1.Line (x1, y1)-(x2, y2), Curbkcolor, BShape2.Visible = FalseEnd IfIf Huabi = 4 And Button = 2 And lindex.Caption = 1 ThenPicture1.
37、Line (x1, y1)-(x2, y2), Curbkcolor, BShape2.Visible = FalseEnd IfIf Huabi = 4 And Button = 2 And lindex.Caption = 2 ThenPicture1.Line (x1, y1)-(x2, y2), Curcolor, BShape2.Visible = FalseEnd If第四章 系统测试使用后,基本达到预期目标,界面良好,操作简单。这是一个比较小型的软件系统,所实现的功能不尽完善,涉及到的部分也不多,很多功能有待进一步扩充。经过这次的毕业设计,初步了解了如何从软件工程的角度分析一个开
38、发项目,对一个项目完整的开发过程有了更深入的了解。学会了一个项目从调试到设计、测试到交付使用中的一些问题的处理,学会了如何把分析的结果在计算机上一步一步实现。由于经验的不足,分析也经过了多次的反复。到系统实施阶段发现了一系列的错误。在指导老师的指导和同学的帮助下还算顺利地解决了问题,从中深刻地体会到分析的重要性和分析文档的重要。系统测试作为软件开发的重要组成部分,是保证软件质量的重要部分,通过编制测试数据,能测试出系统隐藏的一些错误。学会了一般测试数据的编制方法和测试文档的使用。软件测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试
39、是发现了至今为止尚未发现的错误的测试。与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试基本上有下述几个步骤组成:1、模块测试:在这个测试过程中所发现的往往是编码错误和详细设计的错误。2、子系统测试:这个步骤着重测试模块的接口。3、系统测试:在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。4、验收测试:在这个测试步骤中发现的往往是系统需求说明书中的错误。对于以上的几个步骤,分别要完成功能测试、强度测试及性能测试、可用性测试等。5、功能测试:测试是否满足开
40、发要求,是否能够提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。6、强度测试及性能测试:测试系统的能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量复杂的管理等。测试软件的运行性能,这种测试常常与强度测试结合进行,需要事先对被测软件提出性能指标,如计算的精度、记录的精度、响应的时限和恢复时限等。7、可用性测试:测试用户是否能够满意使用。具体体现为操作是否方便,用户界面是否友好等。 因为在软件编辑时听取了用户的意见。因此,用户界面的设计上并没有
41、太大的问题。总之,通过这次毕业设计,通过学vb6.0,能综合利用几年来学习的知识,初步做到了融合贯通。从软件工程、api函数调用,到具体的每个gdi函数的使用等等,进一步做到了加强。经过三年的学习,特别是通过做毕业设计,真正学到了知识,并能利用学到的知识解决了实际应用问题,既锻炼了自己,又创造了效益,真切地体会了知识的力量和成功的喜悦。第五章 总结(一)VB作为新生物,超越了Basic的限制,有了许多自己的特点:(1)VB建立了一种新的变量类型货币型变量,通过使用仅带有二位小数的货币变量,就能避免因使用实型变量而带来的数值积累误差问题。(2)VB在调用函数(Function)时,必须在函数名后
42、跟一对括号(3)VB对白兰地使用范围重新做了规范,在Basic里把隐含变量都当作全局变量,而在VB里对隐含变量都当作局部变量。(4)VB里的说明语句(Declare),仅支持动态链结库(DLL)的子程序和无变量函数。使用数组,必须事先用Dim或Redim进行定义。(二)在编程中掌握重要方法,往往能事半功倍。1、如:像“画笔”一样,在绘图区的任意地方输入文本几乎所有的绘图软件都提供了文字输入的功能,有的(如Photoshop)甚至能够做一些简单的文本编辑的工作。首先,设置Commondialog1和Picture1关于字体的所有属性,如:“Picture1.FontName = CommonDi
43、alog1.FontName”。当执行程序时,会出现一个信息框:“控制面板中未安装字体”,解决它必须首先声明两个变量:Screenfonts=H1、Printerfonts=H2。并写出如下代码:“CommonDialog1.Flags = Screenfonts Printerfonts”。同时在VB的属性窗口中设置Flags的值为1。接下来需要完成在Picture1中单击左键的那个位置输入文本这一功能,因此需要得到单击左键处的坐标,即在Picture1_Click()中将startx、satrty的值传给CurrentX、CurrentY。这样,问题就解决了。2、灵活运用PaintPict
44、ure用PaintPicture方法来实现图像的翻转,比较容易(需要APIStretchBlt的支持)。其语法规则为:object.PaintPicture Picture, x1, y1, width1, height1, x2, y2, width2, height2, (opcode)。只要熟练掌握其中变量的使用,那么图像变换任你选择。3、对Toolbar中某一按键状态的控制通常,需对Toolbar中某一按键进行程序 “Select case1 case2 case3 ” 。当需要对一按键的状态进行控制,比如要在某一时刻让第5个按键自动按下,则只需要写出代码:“Toolbar1.Butt
45、ons(5).Value = 1”即可。 VB是一门典型的面向对象编程的语言,它的整个程序都是由事件驱动的。VB之所以叫做“Visual Basic”就是因为它使用了Basic语言作为代码,所以它们之间有着千丝万缕的关系,如果学过Basic的话,看到VB的程序结构会感到很亲切。从开发个人或小组使用的小工具,到大型企业应用系统,甚至通过 Internet 的遍及全球分布式应用程序,都可在 Visual Basic 提供的工具中各取所需。 通过实战的锻炼知道了什么叫纸上得来终觉浅。框架的搭建,步骤的细分,设计的过程等等都不是看什么书一便两便就能解决的事情。难怪现在的用人单位都是想要有经验的,立马就
46、能为他们实现价值的人才。实践的重要性可见一斑。发觉自己学的不仅仅是样学问,还是一种不断钻研进取的学习态度。学下这份学问,留着这份态度,我想这就是我们今后要走的路,该做的事吧。 参考文献1 宁正元.Visual Basic程序设计教程.苏州大学出版社.2001-053 赵建敏/郭庆.中文版Visual Basic编程指南.电子工业出版社.2003-034 王竞.Visual Basic5.0中文版程序员伴侣.人民交通出版社2004-016 康慧芳.可视化编程应用VisualBasic6.0 .人民邮电出版社. 2004-6-1致谢经过几个月的工作,毕业设计还算顺利的结束。在这期间我遇到好多自己解
47、决不了的问题,指导老师给了我很多的关心与帮助。我的基础不是很好,能在导师的指导完成毕业设计,在此处学生向金红老师致谢。还有给予我帮助的一些同学一并表示谢意。今后我会带着你们给予的真诚继续我的学习与工作。附录 程序代码与实现新建菜单清除当前画板Private Sub clear_Click()a = MsgBox(是否保存文件?, vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDialog1.FileNameIf f$ ThenEnd
48、IfEnd If重置End Sub打开菜单打开新文件Private Sub open_Click()a = MsgBox(是否保存文件?, vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDialog1.FileNameIf f$ ThenEnd IfEnd IfOn Error Resume NextCommonDialog1.Filter = bmp文件|*.bmp|jpg文件|*.jpg|所有文件|*.*CommonDialog1
49、.Action = 1f$ = CommonDialog1.FileNameIf f$ ThenEnd IfEnd Sub保存菜单保存文件Private Sub save_Click()CommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDialog1.FileNameIf f$ ThenEnd IfEnd Sub打印菜单打印操作Private Sub m1b8_Click(Index As Integer)Printer.Print Form1.Picture1End Sub设置为壁纸(居
50、中-拉伸)菜单设置为壁纸(居中-拉伸)Private Sub m1b9_Click()f$ = back.bmpIf f$ ThenEnd If调用api函数Dim ChangeWPChangeWP = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, back.bmp, 0)MsgBox 壁纸设定完毕(居中-拉伸) & vbCrLf & & vbCrLf & UCase$(back.bmp) & vbCrLf & , 64, 设定为壁纸End Sub退出菜单退出程序Private Sub exit_Click()a = MsgBox(是否保存文件?,
51、 vbYesNo, 请确认)If a = 6 ThenCommonDialog1.Filter = bmp文件|*.bmp|所有文件|*.*CommonDialog1.Action = 2f$ = CommonDialog1.FileNameIf f$ ThenEnd IfEnd Ifdl = DeleteObject(newbrush)dl = DeleteObject(oldbrush)EndEnd Sub剪切菜单图形剪切Private Sub cut_Click()确定有选择If Selected = 1 Thenxxx = small(Selectx1, Selectx2)xwidth
52、 = Abs(Selectx2 - Selectx1)yyy = small(Selecty1, Selecty2)yheight = Abs(Selecty2 - Selecty1)将剪切图形保存在缓冲图形框中,并用底色填充选择区域Stored = 1End IfEnd Sub复制菜单图形复制Private Sub copy_Click()确定有选择If Selected = 1 Thenxxx = small(Selectx1, Selectx2)xwidth = Abs(Selectx2 - Selectx1)yyy = small(Selecty1, Selecty2)yheight = Abs(Selecty2 - Selecty1)将剪切图形保存在缓冲图形框中Stored = 1End IfEnd Sub粘贴菜单粘贴操作Private Sub plst_Click()If Stored = 1 ThenIf Selected = 1 Then确定粘贴的数值xxx = small(Selectx1, Selectx2)x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 03 11 短文二篇2024-2025学年八年级语文上册同步教学设计(河北专版)
- 第14课 明至清中叶的经济与文化教学设计-2023-2024学年高中历史统编版(2019)必修中外历史纲要上册
- 10-2《师说》教学设计 2024-2025学年统编版高中语文必修上册
- 2024四川九洲投资控股集团有限公司招聘党建干事岗2人笔试参考题库附带答案详解
- Module8 Unit1 While the traffic lights were changing to red,a car suddenly appeared.教学设计2024-2025学年外研版英语八年级上册
- 粤教版信息技术 必修 3.3.1 制作多媒体作品的基本过程教学设计
- 14-1《故都的秋》教学设计 2024-2025学年统编版高中语文必修上册
- 2025年广东省外语艺术职业学院单招职业技能测试题库完整
- Module 3 Unit 3 教学设计2024-2025学年外研版英语八年级上册
- 2025年贵州工贸职业学院单招职业倾向性测试题库附答案
- 外研版(三起)小学英语三年级下册Unit 1 Animal friends Get ready start up 课件
- (新版)广电全媒体运营师资格认证考试复习题库(含答案)
- 保安员资格考试复习题库及答案(800题)
- 《公路建设项目文件管理规程》
- 2024年法律职业资格考试(试卷一)客观题试卷与参考答案
- 春节文化研究手册
- 2016-2023年娄底职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 安全生产重大事故隐患排查报告表
- 小学音乐课后服务教学设计方案计划
- 人教版八年级数学下册全册教案(完整版)教学设计
- 简单娱乐yy频道设计模板
评论
0/150
提交评论