C++Builder中的按钮制作.doc_第1页
C++Builder中的按钮制作.doc_第2页
C++Builder中的按钮制作.doc_第3页
C++Builder中的按钮制作.doc_第4页
C++Builder中的按钮制作.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

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

文档简介

CBuilder中的按钮制作本栏目责任编辑:谢媛媛?开发研究与设计技术?C+Builder中的按钮制作安中印.张嫣,宋中山(中南民族大学技计算机学院,湖北武汉,430074)摘要:C+Builder是一个功能齐全的Windows应用程序开发工具.它的应用范围非常广泛.本文主要从四个方面叙述了按钮的制作关键字:C+Builder;按钮:组件中图分类号:TP311文献标识码:A文章编号:10093044(2007)0411065一O2TheFactureofBuoninC+BuilderANZhongyin,ZHANGYan,SONGZhongshanfSouthCentralUniversityforNationalities,Wuhan430074.China1Abstract:C+BuilderisaexploittoolforWindowsapplicationthathasfullyfunctionsItisapplyinmanyfields.Inthispaper.1willintroducethefactureofbuttonforfourmethods.Keywords:C+Builder;Button;Discreteness1引言C+Builder是一个功能齐全的Windows应用程序开发工具,它的功能很强大,应用范围也非常广泛.C+Builder真正的提供了可视化的开发环境,它使我们从完全以代码的形式创建应用程序的繁琐且复杂的工作中解脱出来.使我们完全不用掌握太多的专业知识就能创建出精彩的图形化程序来.随着多媒体技术的发展在越来越多的应用程序中,单纯的文字显示已经无法满足人们的视觉效果.使用者对于界面的图形效果的要求也越来越高.所以,我们将在下面介绍几种比较有趣的按钮制作方法来满足人们的这一需求.2具体的实现方法2.1C+Builder中的按钮控件在CB中,对于按钮控件主要有三种:Button,BitBtn,SpeedBut.ton.接下来,我将分别给大家讲述这三种控件的应用.Button组件就是我们大家最常见到的那种按钮.它是纯粹的文字显示,而BitBtn除了文本显示外还可以加入图标显示.我们只要在它的属性Glyph中加入适合的图标就可以了.两者的共同属性就是既可以接收鼠标操作又能接收键盘的操作.而SpeedBuon就是我们常说的加速键,一般缺省情况下,它是方形的,它是对应于菜单中用户经常单击的功能.可以减少用户单击菜单的次数,而且快速按钮可以取任何尺寸.也可以包含文本,但通常不包含文本.一般加速键上面附有的小图标方便于用户判断选项用途.它不同于前两个按钮的地方在于它只接收鼠标操作而不接收键盘的操作.而且除了在属性Glyph中加入图标外,它还有另外一个属性也需要被设置,那就是提示(Hint)属性,当我们把鼠标的指针移到SpeedButton上超过两秒,就会出现一段文字的提示信息.我们只要想把SpeedButton的属性ShowHint设置为Tree,然后在Hint栏中输入提示文字就可以了2.2多边型按钮我们常用的按钮一般都是四边形的,长方形或者是正方形,为了增加可观性,我们可以修改下按钮的形状,这里介绍种椭圆形和三角形按钮.很多的资料上也给出许多的方法,我们就介绍常用方法.这里我们介绍的按钮的形状的改变不是在设计时设置的,而是在运行时设置的这里按钮形状的设计主要分为两步:第一步创建按钮的外形,即定义窗口区域,使用API的区域创建函数就可达到目的.我们用了CreateEllipticRgn,CreatePolygonRgn,用于创建不同类型的区域显示.第二步将区域显示应用到窗口上.一旦使用区域函数创建了一个新的区域显示.就可以使用SetWindowsRgn函数将这个区域应用到窗口上.iigJ建圆形按钮HRGNhRgnY:CreateEllipticRgn(0,0,RButton->Width,YButton一>Height);SetWindowRgn(YButton一>Handle,hRgnY,TRUE);/1建三角形按钮TrPoint0.x=SButton一>Width/2;TrPoint0.y=0;TrPoint1.x=0:TrPoint1.y=SButton一>Height;TrPoint2.x=SButton一>Width;TrPoint2.y=SButmn一>Height;HRGNhRgnS=CreatePolygonRgn(TrPoint,3,ALTERNATE);SetWindowRgn(SButton一>Handle,hRgnS,TRUE);其中TrPoint在Unit.h头文件中定义如下:private:/UserdeclarationsPOINTTrPoint3;我们分别在按钮的边界内创建了一个圆形区域和一个三角形区域,然后作为新的窗口区域把它赋给各自的按钮.需要注意的是区域是以按钮坐标的形式定义的,而不是用屏幕坐标.(0,0)点是按钮的最左上角,而(宽,高)点是按钮的最有下角.这里光标只在圆形和三角形区域内变为crCross形状.当然为了使按钮美观我们可以结合上面所介绍BitBtn或SpeedButton按钮.在按钮上附上位图.图1显示了按钮的效果图.图12-3动态按钮这里介绍的动态按钮,在一个冈片的某一小块区域点击鼠收稿日期:2007-0122作者简介:安中印(1983一),男,回族,安徽人,中南民族大学技计算机学院研究生,研究方向:数据库,数据挖掘:张嫣(1982-),女,上海人,中南民族大学技计算机学院研究生,研究方向:数据库,数据挖掘;宋中山,男,副教授.?开发研究与设计技术?*?本栏目责任编辑:谢媛媛标,让这小块区域象按钮一样有动的效果.这就是所谓的动态按钮.它的原理就是用Label在图片上框一小块区域.如果鼠标在这块区域内按下也就是在Label上按下,就把这小块区域向右下放移动很小一段距离,当鼠标松开的时候在把这块区域向左上方移动同样的一段距离,这样给别人的感觉就像在按钮上点击一样具体实现如下:以.bmp图片为例来说明具体实现(1)新建一个工程,把Form1的BroderStyle设置成bsSingle,在Form1上放一个Image控件.把着个控件的picture属性设置成事先准备好的和1程在一个目录下的1.bmD图片:(2)在Imagel上放一个Label控件.,abel控件AutoSize设置成false,Transparent设置成true,其他的属性都默认.用Labell在图片上框一块区域.以后点击这块区域就象点击在按钮上有动的效果:(3)接下来就是要把上一步用Labell框下的区域保存为2,bmp并放在_I:程的目录下.实现的方法很多,这里就不说了:(4)在Form1的头文件中定义HDCdeCompatible;Graphics:TBitmap*BtnBmp;在Form1的构造函数中初始化BtnBmp和&Compatible代码如下&Compatible=CreateCompatIhleDC(GetDC(Handle);BtnBmp=newGraphics:TBitmap;在Labell的OnMouseDown事件中写入如下的代码BtnBmp一>LoadFromFile(2.bmp);SelectObject(dcCompatible,BtnBmp一>Handle);BitBlt(GetDC(Form1一>Handle),401,401,99,99,dcCompatible,0,0,SRCCOPY);在Labell的OnMouseUp事件中写人如下的代码BtnBmp一>LoadFromFile(2.bmp);SeleetObject(deCompatible,BtnBmp一>Handle);BitBlt(GetDC(Firm1一>Handle),400,400.100,100.&Compatible,0,0,SRCCOPY);其实,我们应用的这个方法可以不仅仅运用到按钮上.还可以是文字.总之,应用这个方法对于我们程序界面的设计,起到了很大的作用,我们可以按照自己的想法设计出很多美观的界面.2.4定制按钮组件虽然CB中已经提供了按钮的控件.但是它可能不能满足人们的需求.这样,我们可以设计一些全新的控件来满足这些需求.这里,我们介绍一种创建按钮组件的方法.创建组件最简单的方法就是修改已有的组件.使其满足我们的需求.我们以创建一个菱形按钮和椭圆形按钮为例.虽然在前面我们也介绍了多边形按钮,但是这次我们要求按钮的形状的改变在设计时设置的,而不是在运行时设置的.所以我们要创建新的组件.这个组件继承于TComponent.具体步骤如下,首先我们要创建组件框架.BCB中提供了自动生成组件框架的方法.所以在这里我们就不详细介绍它的具体过程.我们将其定义TMyNew,然后我们要编写它的属性,由于我们的需求就是需要一个外形改变的按钮,因此,我们不需要任何新的属性,只要和Button的属性一样就可以了.在它的DoPaint属性中,我们来实现我们的需求./菱形按钮POINTRhombusPoint4;RhombusPoint0.x=this->Width/2;RhombusPoint0.Y=0:RhombusPoint1.x=0;RhombusPoint1.Y=this一>Height/2;Rhon1busPointf21.X=this一>Width/2;RhombusPoint2.Y=this一>Height;RhombusPoint3.x=this一>Width;1066电脑知识与技术RhombusPoint3.Y=this->Height/2;HRGNhRgn;hRgn=CreatePolygonRgn(RhombusPoint,4,ALTERNATE);SetWindowRgn(this一>Handle,hRgn,TRUE);PAINTSTRUCTtmpPS;HDChDC=BeginPaint(this->Handle,&tmpPS);if(IsMouseEnter)RhombusPoint0.y+=l;RhombusPoint1.x+=l;RhombusPoint21.Y一=1;RhombusPoint3.x一:1;Polygon(hDC,RhombusPoint,4)elsePolygon(hDC,RhombusPoint,4)RECTrt;:GetClientRect(this一>Handle,&rt);DrawText(hOG,this一>Caption.estr0,strlen(this->Caption.cstr0),&rt,DT-CENTERlDTVCENTERIDr-SINGLELINE);End.Paint(this一>Handle,&tmpPS);/椭圆形按钮HRGNhRgn;hRgn=CreateEllipticRgn(0,0,this->Width,this->HeighI);SetWindowRgn(this一>Handle,hRgn,TRUE);PAINTSTRUCTtmpPS;HDChDC=BeginPaint(this->Handle,&tmpPS);if(IsMouseEnter1Ellipse(hDC,1,1,this->Width一1,this一>Height一1);elseEllipse(hDC,0,0,this->Width,this->Height);RECTrt;:GetClientRect(this一>Handle.&rt1;DrawText(hDC,this->Caption.cstr0,strlen(this->Caption.c_str0),&rtDT_CENTERIDyCENTERIDsINGLELINE);EndPaint(this一>Handle,&tmpPS);创建的按钮效果如图2所示.3结束语C+Builder提供了一个非常优秀的继承开发环境,对开发的各个阶段都提供了很好的支持.从而大大的加速了开发应用程序的效率.使用C+Builder,不仅可以编写一般的Windows应用程序和控制台程序也可以编写复杂的企业级数据库应用和WEB服务程序,还可以编写各种动态链接库和ActiveX控件.在编程中,我们既可以使用其提供的高层次类库VCL来编写代码.也能够深入到Windows底层.直接

温馨提示

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

评论

0/150

提交评论