C++Builder图片放大缩小.doc_第1页
C++Builder图片放大缩小.doc_第2页
C++Builder图片放大缩小.doc_第3页
C++Builder图片放大缩小.doc_第4页
C++Builder图片放大缩小.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+Builder程序设计 学 号:100081102013学生所在学院:信息工程学院 学 生 姓 名 : 邱 剑任 课 教 师 :熊 邦 书教师所在学院:信息工程学院 2010年1月5日2010级07班 实现图像的放大、缩小、任意角度旋转功能邱 剑信息工程学院摘 要:当前,图形是多媒体技术中一种重要的信息媒体,数据量极大并且多种多样的存储格式,阻碍了多媒体技术的发展,为了有效地使用各类图形文件,为使多媒体技术蓬勃发展,图像的变化工作就显得极其重要。C+Builder具有强大的更新和移植能力,应用也非常之广泛,学习C+Builder对程序设计思维能力有很好的锻炼本文主要介绍了如何利用C+程序设计实现了图像的任意倍数的放大、缩小、任意角度旋转功能。在数字图像处理应用领域的简单运用及其重要意义,首先阐述了C+Builder软件的基本窗体结构,以及其属性,并简单的介绍图像处理软件的方法和步骤。本设计表明,通过简单的程序设计,可以实现强大的功能。实现功能的方式多种多样灵活多变,在日常的学习中要多注意各种函数的使用,这样才能更快的提高编写能力,实现更加强大的功能关键词:C+ 放大 缩小 旋转 Abstract: At present, the image is one of the most important multimedia information media, data great quantity and variety of storage formats, obstruct the multimedia technology development, in order to effectively use of various graphics files, to enable multimedia technology vigorous development, image changes jobs are very important. C + + Builder has strong update and transplantation ability, applications are very extensive, study c + + Builder for program design thinking ability have very good exerciseThis paper mainly introduced how to use c + + programming realize image arbitrarymultiples magnification, reducing, arbitrary AngleRotating function. In digital image processing applications, the simple use and its significance,first expounded c + + BuilderThe basic form structure, software and its attributes, and briefly introduces image processing software methods and stepsof.This design shows that through simple programming, may realize the powerful functions. Functions by many waysFlexible, in daily learning to pay more attention to the use of various functions, such ability improved writing ability,Realize more powerful functions Keywords: C+ enlarge reduce rotationC+的简单介绍C+,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C+是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C+(最初这种语言被称作“C with Classes”)。一开始C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C+程序设计语言的国际标准ISO/IEC 14882-1998。C+是具有国际标准的编程语言,通常称作ANSI/ISO C+。1998年是C+标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C+0x。遗憾的是,由于C+语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准(这么说也是不完全正确的,事实上,至今为止没有任何一款编译器完全支持ISO C+)。 另外,就目前学习C+而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C+。根据C+编程思想(Thinking in C+)一书所评述的,C+与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C+ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。为了使用者操作方便,C+bulider油然而生。第一章 系统组件及功能介绍1.1 FormForm,名为窗体,窗体是一个对话框,用户在窗体上完成操作,实现所需要的功能。通过对窗体的基本属性的设置,可以实现窗体的静态功能。再通过简单的编程设置,可以很好的完成所需要达到的效果,给人美观简洁的印象。窗体的基本属性Color属性:设置窗体的背景颜色。Font属性:设置窗体的字体属性。Enabled:设置窗体是否有效,设置为false则无法对窗体进行任何操作。Hint属性:设置VCL控件的ShowHint属性的提示提示信息。Caption属性:设置窗体的标题名称。Name属性:窗体名字,用于显示区别。WindowState属性:设置窗体的初始状态,取值为wsNormal(窗体设置时的小)wsMaximized(最大化显示) ,wsMinimized(最小化显示)BorderStyle属性:设置窗体的类型。 bsDialog:窗体具有单线边框,大小不能改变,而且没有最小化及最大化按钮。bsNone:窗体没有边框,也没有标题栏,边框的大小不能改变。bsSingle:边框大小不可变的标准窗体,有最小化及最大化按钮。bsSizable:边框大小可变的标准窗体,有最小化及最大化按钮。bsSizeToolWin:没有最小化及最大化按钮,边框大小可变。 。bsToolWindows:风格与bsSignle类似,只是标题栏比较小。选择该项时,没有最小化及最大化按钮,边框大小不可变。biSystemMenu:通过单击标题栏左边的图标,或在标题上单击鼠标右键来显示系统菜单。 biMinimize:在标题栏右边显示最小化按钮 biMaximize:在标题栏右边显示最大化按钮biHelp:在标题栏右边显示帮助按钮。只有窗体的BorderStyle属性设置为bsDialog或者窗体属性BorderIcons中不包括biMaximize和bimMinize时,biHelp设置才有效。1.2 TLabelTLabel,名为标签。标签主要用于显示说明,让人简单明了的理解窗体中各操作的功能以及属性。1.显示文本在标签组件中实际显示的文本是由Caption属性控制的,该属性可以在属性页中设置,或在执行程序时用代码标签组件中所显示的文本,以适应不同用途的需要。 (Label1-Caption= ;) 2.自动改变大小标签的大小由绘制时的大小确定,当然也可以通过Height、Width属性来确定。当标签的大小标签组件提供了可以随时改变组件尺寸、以便方便帮助用户适应较长或较短标题的两种属性AutoSize和WordWarp。属性AutoSize决定了组件是否可以自动改变尺寸,以适应其内容的变化。如:将该属性设为Ture,标签组件便会根据内容改变水平方向的尺寸。1.3 TBitBtnTBitBtn组件可以在按钮表面上显示位图(Bitmap)文件,还可以改变按钮上文字的颜色。该组件有以下几个特殊的属性:Kind属性:Kind属性决定了TBitBtn组件的种类。它是一个枚举型属性,取值可以是:bkCustom(自定义 )、bkOk、bkCancel、bkYes、bkNo、bkHelp、bkClose、bkAbort(中止 )、bkRetry(重试 )、bkIgnore和bkAll。用户自己指定位图,该属性要设置为bkCustom(自定义 ),然后通过Glyph属性指定一个位图。如果不想在按钮上显示文字,只要将按钮的Caption属性清空。Glyph属性:通过Glyph属性可将指定的图形1.4 EditEdit,名为文本编辑组件,在C+Builder中使用的频率较为频繁,它是一个文本编辑区域,程序运行时可以用来输出、输入和编辑文本。文本编辑框的属性很多,有些属性是属于前面已经介绍的基本属性,还有一些属性将直接影响文本编辑框的应用。下面就介绍一下TEdit组件的Text属性文本编辑框中重要的属性当属Text属性,该属性中存放了文本编辑框中显示的实际文本。Text属性有三种使用方法:1.在设计时属性窗口中设置文本编辑框初始显示的内容默认为Edit1。2.在运行时通过代码设置或由用户直接输入: Edit1-Text=“C+Builder”;3.返回文本编辑框中当前内容。当用户对文本编辑框中的内容进行输入、编辑修改后,可以用Text属性将当前内容返回。例如:Label1-Caption=Edit1-Text;1.5 TopenpictureDialog对话框组件TOpenpictureDialog对话框组件有浏览文件的功能,用于打开图形文件,通过Execute打开相应的对话框。在TOpenpictureDialog对话框显示的时候,右侧多了一个可以预览的图形区域。如果选中的文件被组件所支持,则图形可以显示在预览区域。可以识别的文件有:位图(.bmp)、图标文件(.ico)、windows图元文件(.wmf)以及增强型图元文件( .emf)等。所包含的属性有Filter、 DefaultExt、FilterIndex、Title、 InitialDir、 Options、 Filename等属性。Filename属性:Filename属性返回用户最后选择的文件名,文件名中包含了文件所在的路径。如果在打开options属性中设置了ofAllowMultiSelect为ture,也就可以一次选择多个文件,否则通过读取Files-Stringi的值可以获取所有选中的文件名。1.6 Mainmenu 组件Mainmenu,又名为菜单栏组件,主要用于实现菜单功能。使得窗体表面更加简洁。在窗体上添加了此组件。即可在窗体的上边框编辑,产生菜单。然后修改其属性,并通过程序编程,完成功能。Caption属性,设置菜单的名字特别注意,visible属性设置为true,checked属性、default属性、radioltem属性均设置为false,enabled属性也设置为true。在onclick事件中,要设置N2click事件,这样,通过编程,点击了菜单栏,其功能才能实现。第二章 主窗体Form的设计2.1 主窗体Form设计在Form1中添加以下控件: Edit控件两个、label控件两个、Button控件三个、Bitbtn控件一个、Image控件一个、OpenpictureDialog控件一个、Mainmenu控件一个。如图2.1所示:图2.1 主窗体的设计表2-1所示为各控件的Caption属性,方便操作。表2-1 控件属性控件名属性名设定值Form1Label1Label2Bitbtn1CaptionCaptionCaptionCaption图像设计请输入缩放倍数请输入旋转角度旋转图像请输入缩放倍数Button1Caption放大Button2Caption初始化Button3Caption缩小N2Caption打开图片N3Caption保存图片N4Caption退出2.2主界面的设计第一步:创建新的窗体。第二步:在窗体上添加Edit控件两个、label控件两个、Button控件三个、Bitbtn控件一个、Image控件一个、OpenpictureDialog控件一个、Mainmenu控件一个。第三布:设置各控件的Caption属性,设置如表2-1所示。第四步:对各控件进行简单的排列,使得界面美观即可,示例如图2.1所示。第五步:双击所要使用到的控件,并且对其编程,实现功能。第三章 程序设计及算法介绍3.1浏览图像之前,由于在窗体中加入TOpenpictureDialog对话框组件,还有Mainmenu组件,点击菜单中的打开文件按钮,然后对其进行简单的编程,如:OpenPictureDialog1-Execute()。此段语句,即可成功打开浏览对话框。3.2放大,缩小,初始化功能第一步:双击Caption属性为放大的button,进如onclick事件的编程界面。首先得判断是否在edit组件中有数字输入值,避免在没有输入的情况下程序坏死而死机。然后读取图片的初始宽度以及高度,则放大后的图片宽度=原始图片的宽度*放大倍数;放大后的图片高度=原始图片的高度*放大倍数。为防止图片显示过大而超出了界面,对图片位置再进行简单的规定,这样,放大的功能就完成了。第二步:双击Caption属性为缩小的button,进如onclick事件的编程界面。编程步骤与放大时候的步骤类似,只不过算法存在了差异。放大后的图片宽度=原始图片的宽度/缩小倍数;放大后的图片高度=原始图片的高度/缩小倍数。这样缩小功能也能实现了第三步:双击Caption属性为初始化的button,进如onclick事件的编程界面。此时。不需要考虑edit组件上是否有输入值。无论是否有输入,初始化的图片都是一样的,所以不必有此项功能。初始化图片的算法就比较简单了。只是简单的赋值就可以实现了。即:初始化图片的宽度=原始图片的宽度,初始化图片的高度=原始图片的宽度。3.3 图片旋转功能双击Caption属性为旋转图像的bitbtn,进如onclick事件的编程界面。与放大缩小功能相同,首先得判断是否有输入的值,避免程序坏死。定义一个angle,此时要使用Graphics函数,使得图片能够实现旋转的功能。3.4 程序退出功能程序运行结束了,需要安全退出。只需要简单的关闭窗口,就可以完成退出功能了。3.5 程序的算法介绍3.5.1图像的放大和缩小算法 实现图像缩放的算法原理:假设图像X轴方向缩放比例是,Y轴方向缩放比例是。1.当1且1时,图像是被放大。例如,当=1时图像没有任何的变化,保持原有的面貌。当=5时,图像被放大5倍。 2.当1且1时,图像是被缩小。例如,当=0.5时,图像被缩到一半大小,再次点击,则会变成原有的0.25倍。3.算法公式:原图中点(x0,y0)对应新图中的(x1,y1)为:x0= x1*;y0= y1*。实现方法介绍:利用C+中Image控件的Stretch属性,将原始宽度和长度分别乘以放缩系数,即可以实现图像的放大与缩小。这样就能实现图像的缩放功能了。3.5.2图像的旋转算法实现图像旋转的算法原理:图像的旋转是以图像的中心为原点,旋转一定的角度。旋转后图像的大小有可能会发生些许改变的。如图3.5.1,点(x0,y0)经过旋转度后坐标变成(x1,y1)。算法公式:在旋转前的坐标计算法: 在旋转后的坐标计算法: 图3.5.1 旋转算法示意图由图3.5.1可知,旋转是绕坐标轴原点开始的,向右为X轴正方向,向上为Y轴正方向,设其为坐标系II,而屏幕中的坐标一般以左上角为原点,以向右为X轴正方向、向下为Y轴正方向,设其为坐标系I。如果是绕一个指定点旋转,则需要先将坐标系平移到该点,再进行旋转,最后再平移回原来的原点,以完成旋转。实现方法介绍:首先必须先获取原始图像的宽度和高度以及原图的中心三个点的坐标,经过旋转后得到新图三个点的坐标,将角度化为弧度,然后计算新图的高度以及宽度,并且将值返回。这样就能实现图片的旋转功能了。第四章 运行结果展示4.1打开软件首先。运行编辑好的软件,就会出现如图4.1所示的结果。可见在没有读取图像之前,各按钮是灰色的,说明是不可以使用的,点击菜单:文件,然后打开图片如图4.2.图4.1 主界面图4.2 打开图片后4.2 图像的放大和缩小在“请输入缩放倍数”文本框内输入数字3,点击放大、缩小后运行结果图如下: 图4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论