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 importantmultimedia informationmedia,data great quantity and variety of storage formats, obstruct the multimediatechnology development, in order to effectively use of various graphics files,to enable multimedia technology vigorous development, image changes jobs arevery important. C + + Builder has strong update and transplantation ability,applications are very extensive, study c+ +Builder for program design thinkingability have very good exercise
This paper mainly introduced how to use c++programming realize image arbitrarymultiples magnification, reducing, arbitrary AngleRotating function. Indigital image processing applications, the simple use and its significance,first expounded c + + BuilderThe basic form structure, software and itsattributes, and briefly introduces image processing software methods and stepsof.This design shows that through simple programming, may realize the powerfulfunctions. Functions by many waysFlexible, in daily learning to pay moreattention to the use of various functions, such ability improved writingability,Realize more powerful functions
Keywords: C++ enlarge reduce rotation
C++的简单介绍
C++这个词在中国大陆的程序员圈子中通常被读做“C加加” 而西方的程序员通常读做“C plus plus” 它是一种使用非常广泛的计算机编程语言。 C++是一种静态数据类型检查的支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普Bjarne Stroustrup博士在20世纪80年代初期发明并实现了C++ 最初这种语言被称作“C with Classes” 。一开始C++是作为C语言的增强版出现的从给C语言增加类开始不断的增加新特性。虚函数virtual function、运算符重载operator overloading、多重继承multipleinheritance、模板template、异常exception、 RTTI、名字空间name space逐渐被加入标准。 1998年国际标准组织ISO颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。 C++是具有国际标准的编程语言通常称作ANSI/ISO C++。 1998年是C++标准委员会成立的第一年 以后每5年视实际需要更新一次标准下一次标准更新将是在2009年 目前我们一般称该标准C++0x。遗憾的是由于C++语言过于复杂以及他经历了长年的演变直到现在2004年只有少数几个编译器完全符合这个标准(这么说也是不完全正确的事实上至今为止没有任何一款编译器完全支持ISOC++) 。
另外就目前学习C++而言可以认为他是一门独立的语言他并不依赖C语言我们可以完全不学C语言而直接学习C++。根据《C++编程思想》 Thinking in C++一书所评述的C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言) 。
为了使用者操作方便 C++bulider油然而生。
第一章 系统组件及功能介绍
1. 1 Form
Form名为窗体窗体是一个对话框用户在窗体上完成操作实现所需要的功能。通过对窗体的基本属性的设置可以实现窗体的静态功能。再通过简单的编程设置可以很好的完成所需要达到的效果给人美观简洁的印象。
窗体的基本属性
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 TLabel
TLabel名为标签。标签主要用于显示说明让人简单明了的理解窗体中各操作的功能以及属性。
1.显示文本
在标签组件中实际显示的文本是由Caption属性控制的该属性可以在属性页中设置或在执行程序时用代码标签组件中所显示的文本,以适应不同用途的需要。(Label1->Caption=" "; )
2.自动改变大小
标签的大小由绘制时的大小确定当然也可以通过Height、 Width属性来确定。当标签的大小标签组件提供了可以随时改变组件尺寸、以便方便帮助用户适应较长或较短标题的两种属性AutoSize和WordWarp。属性AutoSize决定了组件是否可以自动改变尺寸以适应其内容的变化。如将该属性设为Ture标签组件便会根据内容改变水平方向的尺寸。
1.3 TBitBtn
TBitBtn组件可以在按钮表面上显示位图(Bitmap)文件还可以改变按钮上文字的颜色。该组件有以下几个特殊的属性 Kind属性 Kind属性决定了TBitBtn组件的种类。它是一个枚举型属性取值可以是 bkCustom(自定义) 、 bkOk、 bkCancel、 bkYes、bkNo、 bkHelp、 bkClose、 bkAbort(中止) 、 bkRetry(重试) 、 bkIgnore和bkAll。用户自己指定位图该属性要设置为bkCustom(自定义) 然后通过Glyph属性指定一个位图。如果不想在按钮上显示文字只要将按钮的Caption属性清空。
Glyph属性通过Glyph属性可将指定的图形
1.4 Edit
Edit名为文本编辑组件在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->String[i]的值可以获取所有选中的文件名。
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属性方便操作。
Label1 Caption 请输入缩放倍数
Label2 Caption 请输入旋转角度
Bitbtn1 Caption 旋转图像
Button1 Caption 放大
Button2 Caption 初始化
Button3 Caption 缩小
N2 Caption 打开图片
N3 Caption 保存图片
N4 Caption 退出
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轴方向缩放比例是kx Y轴方向缩放比例是
1.当kx>1且ky>1时图像是被放大。例如当kx=ky=1时图像没有任何的变化保持原有的面貌。当kx=ky=5时 图像被放大5倍。
2.当kx<1且ky<1时图像是被缩小。例如当kx=ky=0.5时图像被缩到一半大小再次点击则会变成原有的0.25倍。
3.算法公式
3C云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超6年运营 。本次为大家带来的是双12特惠活动,香港美国日本韩国|高速精品|高防|站群|大带宽等产品齐全,欢迎咨询问价。3C云科技有限公司官方网站:http://www.3cccy.com/客服QQ:937695003网页客服:点击咨询客户QQ交流群:1042709810价目表总览升级内存 60元 8G内存升级硬盘 1T机械 90元 2...
webhosting24决定从7月1日开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,当然前提是价格依旧不变。目前来看,国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),这样的日本VPS还是有相当大的性价比的。官方网站:https://www.webhosting...
LOCVPS在农历新年之后新上架了日本大阪机房软银线路VPS主机,基于KVM架构,配备原生IP,适用全场8折优惠码,最低2GB内存套餐优惠后每月仅76元起。LOCVPS是一家成立于2012年的国人VPS服务商,提供中国香港、韩国、美国、日本、新加坡、德国、荷兰、俄罗斯等地区VPS服务器,基于KVM或XEN架构(推荐选择KVM),线路方面均选择国内直连或优化方案,访问延迟低,适合建站或远程办公使用。...