使用VisualC制作可伸缩个性化窗体_第1页
使用VisualC制作可伸缩个性化窗体_第2页
使用VisualC制作可伸缩个性化窗体_第3页
使用VisualC制作可伸缩个性化窗体_第4页
使用VisualC制作可伸缩个性化窗体_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、谁都希望自己的应用程序能让人留下一个深刻的印象,让自己的程序窗体有一件与众不同的外衣是一个好办法。试想:在一大堆的普通窗口中突然跳出一个很酷的界面,一定能让人眼睛亮进而产生兴趣的。在,中如何定制可伸缩个性化窗口早就不是什么秘密了,已经有了大量相关的文章进行介绍,无非都是如何调用系统之类的方法,但是在中调用却相对比较麻烦,所以使用制作个性化窗体的文章也有一些,一般都是使用透明背景加图片的方式,所以不能移动任意放大缩小窗体。那有没有不需要调用系统的方法来实现可伸缩的个性化窗体的办法呢?当然有,提供了一套非常强大的系统类库,我们下面就要做一个使用纯打造的可伸缩个性化窗体。我们需要将窗体所有的皮肤全部

2、换成我们自己定义的,包括标题栏,边框和系统按纽等,所以我们首先需要定做一套自己的皮肤图形文件。因为窗体是可伸缩的,所以我们不能简单的取一整幅图片来作为窗体皮肤,而是根据需要先将图片切割为不同的部分,一般来说,有以下图示几大部分(红线为切割线):地址我的电脑(C勒转到!.文件(Z)编辑(1)查看匹收藏工眞(1)帮助01)在这合计算机上存诸的文件車地磁蛊口:)有可菩动存诗的设备0T虜戶擔索色文件夹O;卢帝的文祸WARCRAFTIII(E:)延拓2龍口常严1托仃乱_!共拿文档根据方位,比如将图片各部分命名为:,e_,RTiogph_L,eTfop_Mi,dTdolpe_R,iSgyhsButt,oS

3、ny_sMBiuntt,on_o等。注意,有些图片是可以伸缩的地方,比如等处的图片可以只是一小块,以后需要进行重复贴图。而有些固定大小的图片,m等以后只用贴一次,实际应用的时候要注意区分。采用以上原则,你便可以制作皮肤图片,图示如下:设置中,将窗体的属性设置为(无边框样式),如下图所示:Bottom_Left.bmpBottom_Middle.bmpBottom_Right.bmpMiddle_Left.bmp设置中,将窗体的属性设置为(无边框样式),如下图所示:设置中,将窗体的属性设置为(无边框样式),如下图所示:然后可以将这些图片放到控件或资源文件中供程序调用。接下来,我们使用新建一个应用

4、程序的项目,在窗体的属性IS司-ofrsiWCtDES咻習專cs设计n|逅我逐逅我逐左捽寻黑爭gu押寻觀捽寻觀捽寻觀捽寻觀捽寻觀捽口$;叢赛叢赛叢赛叢赛叢赛叢赛叢菩技总赛叢赛叢赛叢赛叢赛叢赛叢赛叢赛叢赛接瓷”口定义一个资源管理器:然后使用以下的方法在的构造函数中将图片取出来(资源文件名为Skin.re)s:ourcesrm=newResourceManager(SkinWiAssembly.GetExecutingAssembly();Bottom_Left=(Bitmap)rm.GetObje(其它的图片也按照此方法取)重载的事件:/手工画窗体的各个部画左边框画下边框画右边框画左下角画右下角

5、画标题栏左边画标题栏右边画标题栏中间画系统按纽以下是上述画皮肤方法的具体实现部分,我只举一个画左边框的代码示例,其它的部分请读者举一返三:衣服穿上了,现在我们的程序就有了不同的外观:看上去已经很酷了,不过只是花架子,因为边框,标题栏,系统按纽都是我们自己画上去的假的边框,标题栏和系统按纽,所以这个窗体既不能移动也不能自由的放大缩小,点关闭都没用。以前我们写程序从来都不需要关心这个的,这些都是窗体的基本功能呀?没有从来都没有想到这个竟然还会是个问题吧?怎么办呢?答案就是我们自己来做,不过会比较麻烦,因为取消掉了边框,所以不会帮你发出系统事件,你捕捉不到系统发生了什么事情的话,就没有办法写下响应代

6、码,所以我们要自己检测鼠标的坐标,并根据鼠标的动作,自己来发出事件消息,然后进行响应。首先我们先定义出一些响应事件的代码,我定义了一个抽象的基类,用来表示所有的鼠标事件,它有一个抽象方法:然后再来定义出它的各个派生类来表示出具体每个鼠标事件响应的代码。面是一个向右拉伸窗口事件的代码响应:非常简单和容易理解,我就不再赘述,其它的各个事件也都一样简单,这里也不给出所有事件的实现代码,只是列举一下还需要实现的代码响应类::拉伸左边框:拉伸下边框:拉伸上边框:拉伸左上角:拉伸右上角:拉伸左下角:拉伸右下角:鼠标拖动鼠标拖动同样也很简单,不过却稍不同于窗口的缩放拉伸,这里举出它的实现代码接下来我们开始编写发出事件的代码,先定义几个变量:边框和标题栏的大小保存鼠标的临时坐标鼠标的事件响应对象然后在的事件中记录下鼠标的当前坐标:附:为然后再根据鼠标的坐标定义出事件响应对象:/鼠标点击左上边框当然有的事件也可以直接响应:/鼠标点击系统关闭按纽大部分的事件响应实际上是在事件中完成的:/注意坐标是改变鼠标的指针形状执行时间响应这个静态变量给出的,它的值为鼠标在桌面上的全局坐标给出每个不同部位的鼠标的指针形状:最后在事件中将变量释放掉:为了更加逼真,还可以加上标题栏的双击最大化或者还原的事件:防止窗体被缩小成一个点,最好给窗口的

温馨提示

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

评论

0/150

提交评论