属性C Builder图片放大缩小

图片缩小  时间:2021-02-21  阅读:()

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.算法公式

香港E3 16G 390元/ 香港E5*2 32G 600元/ 香港站群 4-8C 1200元/ 美国200G高防 900/ 日本100M 700元

3C云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超6年运营 。本次为大家带来的是双12特惠活动,香港美国日本韩国|高速精品|高防|站群|大带宽等产品齐全,欢迎咨询问价。3C云科技有限公司官方网站:http://www.3cccy.com/客服QQ:937695003网页客服:点击咨询客户QQ交流群:1042709810价目表总览升级内存 60元 8G内存升级硬盘 1T机械 90元 2...

webhosting24:€28/年,日本NVMe3900X+Webvps

webhosting24决定从7月1日开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,当然前提是价格依旧不变。目前来看,国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),这样的日本VPS还是有相当大的性价比的。官方网站:https://www.webhosting...

LOCVPS新上日本软银线路VPS,原生IP,8折优惠促销

LOCVPS在农历新年之后新上架了日本大阪机房软银线路VPS主机,基于KVM架构,配备原生IP,适用全场8折优惠码,最低2GB内存套餐优惠后每月仅76元起。LOCVPS是一家成立于2012年的国人VPS服务商,提供中国香港、韩国、美国、日本、新加坡、德国、荷兰、俄罗斯等地区VPS服务器,基于KVM或XEN架构(推荐选择KVM),线路方面均选择国内直连或优化方案,访问延迟低,适合建站或远程办公使用。...

图片缩小为你推荐
邮箱怎么写正确的邮箱格式怎么写在线漏洞检测网站好像有漏洞,直接看代码可以找出来吗?中国电信互联星空电信的互联星空服务是什么?吴晓波频道买粉《充电时间》的节目跟《吴晓波频道》哪个好听?渗透测试渗透测试的专业服务安卓应用平台安卓系统支持的软件并不是那么多,为什么这么多人推崇?中小企业信息化什么是中小企业信息化途径ios7固件下载ios 7及以上固件请在设备上点“信任”在哪点?mate8价格华为mate8什么时候会降价商标注册查询官网全国商标注册查询在哪里查呀?
已备案未注册域名 播放vps上的视频 国内免备案主机 directspace fastdomain softlayer 加勒比群岛 免费主机 主机合租 域名接入 1g空间 空间登录首页 杭州电信 cdn服务 广东服务器托管 亿库 windowsserver2012r2 phpinfo 塔式服务器 美国asp空间 更多