VB实现画图小工具.docx
- 文档编号:16471724
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:13
- 大小:24.25KB
VB实现画图小工具.docx
《VB实现画图小工具.docx》由会员分享,可在线阅读,更多相关《VB实现画图小工具.docx(13页珍藏版)》请在冰点文库上搜索。
VB实现画图小工具
题目:
VB实现画图小工具
VB实现画图小工具
一、计算机图形学
1.1计算机图形学的发展
1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I号(WhirlwindI)计算机的附件诞生了。
该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。
1958年美国Calp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。
在整个50年代,只有电子管计算机,用机器语言编程,主要应用于科学计算,为这些计算机配置的图形设备仅具有输出功能。
计算机图形学处于准备和酝酿时期,并称之为:
“被动式”图形学。
到50年代末期,MIT的林肯实验室在“旋风”计算机上开发SAGE空中防御体系,第一次使用了具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标。
与此同时,类似的技术在设计和生产过程中也陆续得到了应用,它预示着交互式计算机图形学的诞生。
1962年,MIT林肯实验室的IvanE.Sutherland发表了一篇题为“Sketchpad:
一个人机交互通信的图形系统”的博士,他在中首次使用了计算机图形学“puterGraphics”这个术语,证明了交互计算机图形学是一个可行的、有用的研究领域,从而确定了计算机图形学作为一个崭新的科学分支的独立地位。
他在中所提出的一些基本概念和技术,如交互技术、分层存储符号的数据结构等至今还在广为应用。
1964年MIT的教授StevenA.Coons提出了被后人称为超限插值的新思想,通过插值四条任意的边界曲线来构造曲面。
同在60年代早期,法国雷诺汽车公司的工程师PierreBézier发展了一套被后人称为Bézier曲线、曲面的理论,成功地用于几何外形设计,并开发了用于汽车外形设计的UNISURF系统。
Coons方法和Bézier方法是CAGD最早的开创性工作。
值得一提的是,计算机图形学的最高奖是以Coons的名字命名的,而获得第一届(1983)和第二届(1985)StevenA.Coons奖的,恰好是IvanE.Sutherland和PierreBézier,这也算是计算机图形学的一段佳话。
70年代是计算机图形学发展过程中一个重要的历史时期。
由于光栅显示器的产生,在60年代就已萌芽的光栅图形学算法,迅速发展起来,区域填充、裁剪、消隐等基本图形概念、及其相应算法纷纷诞生,图形学进入了第一个兴盛的时期,并开始出现实用的CAD图形系统。
又因为通用、与设备无关的图形软件的发展,图形软件功能的标准化问题被提了出来。
1974年,美国国家标准化局(ANSI)在ACMSIGGRAPH的一个与“与机器无关的图形技术”的工作会议上,提出了制定有关标准的基本规则。
此后ACM专门成立了一个图形标准化委员会,开始制定有关标准。
该委员会于1977、1979年先后制定和修改了“核心图形系统”(CoreGraphicsSystem)。
ISO随后又发布了计算机图形接口CGI(puterGraphicsInterface)、计算机图形元文件标准CGM(puterGraphicsMetafile)、计算机图形核心系统GKS(GraphicsKernelsystem)、面向程序员的层次交互图形标准PHIGS(Programmer'sHierarchicalInteractiveGraphicsStandard)等。
这些标准的制定,为计算机图形学的推广、应用、资源信息共享,起到了重要作用。
70年代,计算机图形学另外两个重要进展是真实感图形学和实体造型技术的产生。
1970年Bouknight提出了第一个光反射模型,1971年Gourand提出“漫反射模型+插值”的思想,被称为Gourand明暗处理。
1975年Phong提出了著名的简单光照模型-Phong模型。
这些可以算是真实感图形学最早的开创性工作。
另外,从1973年开始,相继出现了英国剑桥大学CAD小组的Build系统、美国罗彻斯特大学的PADL-1系统等实体造型系统。
1980年Whitted提出了一个光透视模型-Whitted模型,并第一次给出光线跟踪算法的范例,实现Whitted模型;1984年,美国Cornell大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果;光线跟踪算法和辐射度算法的提出,标志着真实感图形的显示算法已逐渐成熟。
从80年代中期以来,超大规模集成电路的发展,为图形学的飞速发展奠定了物质基础。
计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展,图形学已广泛应用于动画、科学计算可视化、CAD/CAM、影视娱乐等各个领域。
最后,我们以SIGGRAPH会议的情况,来结束计算机图形学的历史回顾。
ACMSIGGRAPH会议是计算机图形学最权威的国际会议,每年在美国召开,参加会议的人在50,000人左右。
世界上没有第二个领域每年召开如此规模巨大的专业会议,SIGGRAPH会议很大程度上促进了图形学的发展。
SIGGRAPH会议是由Brown大学教授AndriesvanDam(Andy)和IBM公司SamMatsa在60年代中期发起的,全称是“theSpecialInterestGrouponputerGraphicsandInteractiveTechniques”。
1974年,在Colorado大学召开了第一届SIGGRAPH年会,并取得了巨大的成功,当时大约有600位来自世界各地的专家参加了会议。
到了1997年,参加会议的人数已经增加到48,700。
因为每年只录取大约50篇,在puterGraphics杂志上发表,因此的学术水平较高,基本上代表了图形学的主流方向。
1.2计算机图形学的应用
计算机图形学是随着计算机及其外围设备而产生和发展起来的,作为计算机科学与技术学科的一个独立分支已经历了近40年的发展历程。
一方面,作为一个学科,计算机图形学在图形基础算法、图形软件与图形硬件三方面取得了长足的进步,成为当代几乎所有科学和工程技术领域用来加强信息理解和传递的技术和工具。
另一方面,计算机图形学的硬件和软件本身已发展成为一个巨大的产业。
1.计算机图形学活跃理论及技术
(1)分形理论及应用
分形理论是当今世界十分活跃的新理论。
作为前沿学科的分形理论认为,大自然是分形构成的。
大千世界,对称、均衡的对象和状态是少数和暂时的,而不对称、不均衡的对象和状态才是多数和长期的,分形几何是描述大自然的几何学。
作为人类探索复杂事物的新的认知方法,分形对于一切涉及组织结构和形态发生的领域,均有实际应用意义,并在石油勘探、地震预测、城市建设、癌症研究、经济分析等方面取得了不少突破性的进展。
分形的概念是美籍数学家曼德布罗特(B.B.Mandelbrot)率先提出的。
1967年他在美国《科学》杂志上发表了题为《英国的海岸线有多长?
》的著名。
海岸线作为曲线,其特征是极不规则、极不光滑的,呈现极其蜿蜒复杂的变化。
它无法用常规的、传统的几何方法描述。
我们不能从形状和结构上区分这部分海岸与那部分海岸有什么本质的不同,这种几乎同样程度的不规则性和复杂性,说明海岸线在形貌上是自相似的,也就是部局形态和整体形态的相似。
在没有建筑物或其他东西作为参照物时,在空中拍摄的100公里长的海岸线与放大了的10公里长海岸线的两张照片,看上去十分相似。
曾有人提出了这样一个显然是荒谬的命题:
“英国的海岸线的长度是无穷大。
”其论证思路是这样的:
海岸线是破碎曲折的,我们测量时总是以一定的尺度去量得某个近似值,例如,每隔100米立一个标杆,这样,我们测得的是一个近似值,是沿着一条折线计算而得出的近似值,这条折线中的每一段是一条长为100米的直线线段。
如果改为每10米立一个标杆,那么实际量出的是另一条折线的长度,它的每一个片段长10米。
显然,后一次量出的长度将大于前一次量出的长度。
如果我们不断缩小尺度,所量出的长度将会越来越大。
这样一来,海岸线的长度不就成为无穷大了吗?
为什么会出现这样的结论呢?
曼德布罗特提出了一个重要的概念:
分数维,又称分维。
一般来说,维数都是整数,直线线段是一维的图形,正方形是二维的图形。
在数学上,把欧氏空间的几何对象连续地拉伸、压缩、扭曲,维数也不变,这就是拓扑维数。
然而,这种维数观并不能解决海岸线的长度问题。
曼德布罗特是这样描述一个绳球的维数的:
从很远的距离观察这个绳球,可看作一点(零维);从较近的距离观察,它充满了一个球形空间(三维);再近一些,就看到了绳子(一维);再向微观深入,绳子又变成了三维的柱,三维的柱又可分解成一维的纤维。
那么,介于这些观察点之间的中间状态又如何呢?
显然,并没有绳球从三维对象变成一维对象的确切界限。
英国的海岸线为什么测不准?
因为欧氏一维测度与海岸线的维数不一致。
根据曼德布罗特的计算,英国海岸线的维数为1.26。
有了分维的概念,海岸线的长度就可以确定了。
1975年,曼德布罗特发现:
具有自相似性的形态广泛存在于自然界中,如连绵的山川、飘浮的云朵、岩石的断裂口、布朗粒子运动的轨迹、树冠、花菜、大脑皮层……曼德布罗特把这些部分与整体以某种方式相似的形体称为分形(Fractal),这个单词由拉丁语Frangere衍生而成,该词本身具有“破碎”、“不规则”等含义。
曼德布罗特的研究中最精彩的部分是1980年他发现的并以他的名字命名的集合,他发现整个宇宙以一种出人意料的方式构成自相似的结构。
Mandelbrot集合图形的边界处,具有无限复杂和精细的结构。
在此基础上,形成了研究分形性质及其应用的科学,称为分形理论(Fractaltheory)或分形几何学(Fractalgeometry)。
分形的特点和理论贡献
数学上的分形有以下几个特点:
(1)具有无限精细的结构;
(2)比例自相似性;
(3)一般它的分数维大于它的拓扑维数;
(4)可以由非常简单的方法定义,并由递归、迭代产生等。
(1)
(2)两项说明分形在结构上的内在规律性。
自相似性是分形的灵魂,它使得分形的任何一个片段都包含了整个分形的信息。
第(3)项说明了分形的复杂性,第(4)项则说明了分形的生成机制。
我们把传统几何的代表欧氏几何与以分形为研究对象的分形几何做一比较,可以得到这样的结论:
欧氏几何是建立在公理之上的逻辑体系,其研究的是在旋转、平移、对称变换下各种不变的量,如角度、长度、面积、体积,其适用范围主要是人造的物体;而分形由递归、迭代生成,主要适用于自然界中形态复杂的物体,分形几何不再以分离的眼光看待分形中的点、线、面,而是把它们看成一个整体。
我们可以从分形图案的特点去理解分形几何。
分形图案有一系列有趣的特点,如自相似性、对某些变换的不变性、内部结构的无限性等。
此外,分形图案往往和一定的几何变换相联系,在一些变化下,图案保持不变,从任意的初始状态出发,经过若干次的几何变换,图形将固定在这个特定的分形图案上,而不再发生变化。
自相似原则和迭代生成原则是分形理论的重要原则。
分形理论发展了维数的概念。
在发现分数维以前,人们习惯于将点定义为零维,直线为一维,平面为二维,空间为三维,爱因斯坦在相对论中引入时间维,就形成四维时空。
对某一问题给予多方面的考虑,可建立高维空间,但都是整数维。
分形是20世纪涌现出的新的科学思想和对世界认识的新视角。
从理论上讲,它是数学思想的新发展,是人类对于维数、点集等概念的理解的深化与推广。
同时它又与现实的物理世界紧密相连,成为研究混沌(Chaos)现象的重要工具。
众所周知,对混沌现象的研究正是现代理论物理学的前沿和热点之一。
由于分形的研究,人们对于随机性和确定性的辩证关系有了进一步的理解。
同样对于过程和状态的联系,对于宏观和微观的联系,对于层次之间的转化,对于无限性的丰富多采,也都产生了有益的影响。
分形理论还是非线性科学的前沿和重要分支,作为一种方法论和认识论,其启示是多方面的:
一是分形整体与局部形态的相似,启发人们通过认识局部来认识整体,从有限中认识无限;二是分形揭示了介于整体与部分、有序与无序、复杂与简单之间的新形态和秩序;三是分形从特定层面揭示了世界普遍联系和统一的图景。
分形学的应用领域
除了理论上的意义之外,在实际应用中,分形也显示了巨大的潜力,它已经在许多领域中得到有效的应用,其应用范围之广、效益之明显远远超过了十几年前的任何预测。
目前大量分形方法的应用案例层出不穷。
这些案例涉及的领域包括:
生命过程进化,生态系统,数字编码和解码,数论,动力系统,理论物理(如流体力学和湍流)等方面,此外,还有人利用分形学做城市规则和地震预报。
二、设计要点
2.1设置当前绘图点
设置当前绘图点:
在VB中,可以通过设置窗体或图形框的CurrentX与CurrentY属性来设置当前绘图点。
CurrentX与CurrentY决定了绘制或显示的起始坐标,在设计时,这两个属性不可用。
2.2绘制点、线、面的方法
绘制点、线、面的方法:
1、点的绘制法:
在指定对象(如窗体、图形框)上的指定位置处绘制点,还可以为点指定颜色,语法如下:
冒险岛外挂,地下城与勇士,官方,辅助工具,讨论,发快发网,一粒米,冒险小猪哥,YUKE,吸怪,傻挂,加速,热门游戏社区,仙剑奇侠传,梦幻西游,劲舞团,诛仙,彩虹岛Online,跑跑卡丁车,魔兽争霸,QQ,非主流,8k8e,tkxxd'f"`%x,|7u,e,f!
J
对象名.Pset(X,Y),[Color]冒险岛,地下城与勇士,CE,ME,游戏,官网,辅助工具,8k8e-[开放注册中]!
P.d&X9j0p+f
X,Y分别为点的水平与垂直坐标,Color为点的颜色,是可选项。
2、直线的绘制法:
冒险岛,地下城与勇士,CE,ME,游戏,官网,辅助工具,8k8e-[开放注册中]5D"P2U,`q(p3U;~)J9y
在对象上绘制直线,语法如下:
对象名.Line(X1,y1)-(X2,Y2),[Color]
(X1,Y1)是直线的起点,(X2,Y2)是直线的终点,Color为可选项。
如图一:
冒险岛,地下城与勇士,CE,ME,游戏,官网,辅助工具,8k8e-[开放注册中]0k4K/O)M0um3d6W1a
2、图形框的代码是:
天空小小岛!
{*Z,X({.t#N%W/F:
u
PrivateSubPicture1_Click()bbs.tkxxd$Q+h4]6D'?
0J8@
Picture1.Line(350,1020)-(2050,1020)
EndSubbbs.tkxxd&x6U0}$?
1Z5Ap3|2L+j7Q
3、绘制矩形:
用Line方法还可以绘制矩形,语法如下:
冒险岛,地下城与勇士,CE,ME,游戏,官网,辅助工具,8k8e-[开放注册中]5m$[)Z7t%t*a
对象名.Line(X1,Y1)-(X2,Y2),[Color],B,[F]冒险岛外挂,地下城与勇士,官方,辅助工具,讨论,发快发网,一粒米,冒险小猪哥,YUKE,吸怪,傻挂,加速,热门游戏社区,仙剑奇侠传,梦幻西游,劲舞团,诛仙,彩虹岛Online,跑跑卡丁车,魔兽争霸,QQ,非主流,8k8e,tkxxd#p8_3F4C2i
其中,(X1,Y1)是矩形的左上角座标,(X2,Y2)是矩形右下角座标,Color为矩形边框的颜色,使用参数B而不用F,那么矩形用当前的填充色(FillColor)与填充方式(FillStyle)对矩形进行填充;如果使用了参数F,那么矩形以边框的颜色进行填充。
如图二:
特别注意,用Line画矩形框,如果不用其他参数,那么B与坐标(X2,Y2)之间应该有两个逗点,一个是紧跟坐标2,一个表示Color省略了,如:
Picture1.Line(500,500)-(1000,1000),,B-h%u6[;W2o;Z"q!
`
4、绘制圆、椭圆、弧:
2Z6m%G0I&S-?
'I4R
用Circle方法可以绘制圆、椭圆与弧,语法如下:
对象名.Circle(X,Y),Radius,[Color,start,end,aspect]
其中,(X,Y)是圆、椭圆或弧的圆心坐标,Radius是半径,这两个参数是必须项;Color是圆的轮廓色,Start与End是弧的起点与终点位置。
其范围是-2——2Pi;Aspect是圆的纵横尺寸比,默认值是1即圆,如图三:
冒险岛,地下城与勇士,CE,ME,游戏,官网,辅助工具,8k8e-[开放注册中]7a.B.S,{*X%b
2.3颜色、前景与背景色的设置
颜色、前景与背景色的设置:
1{1k+O+a;d'L
1、颜色函数RGB()
在前面关于卷动条控件(综合示例五)的讲解中,我们讲述了色彩的设置问题,而这正是RGB颜色函数的原理所在。
色彩设置的方法如下:
RGB(Red,Green,Blue)bbs.tkxxd,|6[6B%fd2H&|
不要忘了,Red、Green、Blue每种色彩各有0——255种成份,三种色彩不同参数的搭配,就产生了丰富多采的现实世界。
2、前景色的设置:
通过对ForeColor(前景色属性)的设置,可以返回或设置对象的前景色。
3、背景色的设置:
对BackColor属性进行设置,就可以返回或设置对象的背景色。
3.VB画图程序设计
SubEditColor_Click()
monDialog1.Action=3
Picture2.ForeColor=monDialog.Color
EndSub
PrivateSubExit_Click()
End
EndSub
Subpicture2_Load()
drawstate=False
EndSub
Subpicture2_mousedown(buttonAsInteger,shiftAsInteger,XAsSingle,YAsSingle)
Ifbutton=1Then
drawstate=True
PreX=X
PreY=Y
EndIf
Ifbutton=2Then
Circle(X,Y),280
EndIf
EndSub
Subpicture2_mousemove(buttonAsInteger,shiftAsInteger,XAsSingle,YAsSingle)
Ifdrawstate=TrueThen
Line(PreX,PreY)-(X,Y)
PreX=X
PreY=Y
EndIf
EndSub
Subpicture2_mouseup(buttonAsInteger,shiftAsInteger,XAsSingle,YAsSingle)
Ifbutton=1Then
drawstate=False
EndIf
EndSub
SubNew_Click()
Picture2=""
EndSub
SubOpen_Click()
monDialog1.Action=1
EndSub
SubPrint_Click()
monDialog1.Action=5
Fori=1TomonDialog1.Copies
Printer.PrintPicture2
Nexti
Printer.EndDoc
EndSub
SubSaveAs_Click()
monDialog1.FileName="*.drw"
monDialog1.DefaultExt="drw"
monDialog1.Action=2
OpenmonDialog1.FileNameForOutputAs#1
Print#1,Picture2
Close#1
EndSub
PrivateSubToolbar1_ButtonClick(ByValbuttonAsMSCtlLib.button)
OnErrorResumeNext
SelectCasebutton.Key
Case"新建"
mnuFileNew_Click
Case"打开"
mnuFileOpen_Click
Case"保存"
mnuFileSave_Click
Case"直线"
mnuFileLine_Click
Case"矩形"
mnuFileRec_Click
Case"椭圆"
mnuFileCircle_Click
EndSelect
EndSub
PrivateSubmnuFileNew_Click()
Picture2=""
EndSub
PrivateSubmnuFileOpen_Click()
OnErrorResumeNext
DimFileNoAsLong
monDialog1.CancelError=True
monDialog1.Filter="文本文件|*.txt|所有文件|*.*"
monDialog1.InitDir="C:
\MyDocuments"
monDialog1.Flags=&H200000
monDialog1.ShowOpen
IfErr.Number=32755ThenExitSub
FileName=monDialog1.FileName
FileNo=FreeFile
OpenFileNameForInputAs#FileNo
TextEdit.Text=StrConv(InputB(LOF(FileNo),#FileNo),vbUnicode)
Close#FileNo
MnuItemNum=MnuItemNum+1
EndSub
PrivateSubmnuFileSave_Click()
MsgBox"Save"
EndSub
PrivateSubmnuFileLine_Click()
flag=1
EndSub
PrivateSubmnuFileRec_Click()
flag=2
EndSub
PrivateSubmnuFileCircle_Click()
flag=3
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 实现 画图 小工