1、 课程设计任务书 学院 信息科学与工程学院 专业 电子信息工程 学生姓名 学号 设计题目 百叶窗效果程序设计 内容及要求:以面向对象编程技术设计windows应用程序,主要功能: 图片出现百叶窗效果。 进度安排: 第一阶段: 16学时。设计阶段。学生根据所选题目,查阅有关资料,综合所学的理论知识完成整体设计及具体设计。 第二阶段: 12学时。调试测试阶段。上机调试测试,要求学生务必认真,思想高度集中,调试成功后,整理、编写设计资料及实验报告。 第三阶段: 4学时。验收答辩。 指导教师(签字): 年
2、 月 日 分院院长(签字): 年 月 日 摘要 对于百叶窗效果,将放在暂存图形中的数据分成若干组,然后依次从第一组到最后一组搬移,第一次每组各搬移第一条扫描线到可视图的位置;第二次搬移第二条扫描线,接着第三条、第四条扫描线。 调用CopyRect Tcanvas对象与拷贝位图有关的是CopyMode属性和CopyRect方法,其中CopyMode定义拷贝的模式,而Copy Rect执行位图拷贝的操作。当CopyMode定义为缺省值cmSrcCopy时,CopyRect将源画布上的一部分位图拷贝到目标画布上的一个矩形区域内。
3、 在delphi平台上实现百叶窗效果 目录 一.设计目的……………………………………………………………………1 二.关键技术……………………………………………………………………1 三.程序流程……………………………………………………………………3 四.主要源代码…………………………………………………………………3 五. 运行结果及结论…………………………………………………………….6 六.参考文献……………………………………………………………………7
4、 正文: 一.设计目的 通过本课程教学,培养学生具备利用可视化开发工具开发信息系统能力,培养学生的实际动手能力以及自学其它系统开发工具的能力。通过本课程教学,着重培养学生具备理论联系实际,以所学的知识,用于解决实际问题的良好素质。这次实验主要通过对可视化开发工具Delphi7的使用,结合Microsoft Access强大的数据库功能,建立一个人机交互友好系统,通过对已学知知识的掌握,在理论基础上锻炼自己的实际动手能力,培养学生发散思维和系统思维。 二.关键技术 Delphi中与绘图和位图操作有关的对象是画布Tcanvas。Tc
5、anvas对象功能强大,封装了WindowsAPI的GDI,用户可以很方便地在画布上绘制直线、矩形、椭圆、多边形等基本图形,还可以显示、拷贝位图,却不必关心设备上下文等GDI概念,极大地方便了用户。Tcanvas对象本身并不是一个构件,不单独使用,它总是作为其它对象的属性来使用的。Delphi有四个对象具有画布属性,它们是TForm、TImage、TPaintbox和Tbitmap,其中前三者是可视化构件。至于Tcanvas的详细情况,可以参考Delphi的联机帮助。 实现简单的位图显示特技,实际上就是以不同的方式逐渐将源位图拷贝到Tcanvas类型的对象上,如从位图的中央开始拷
6、贝一个矩形区域到屏幕中央,矩形区域不断扩大直到拷贝整个位图,其视觉效果就是位图从屏幕中央向四周扩散。不同的拷贝方式就形成了多种特技形式,如扩散、拉动和百叶窗等。对于每种特技形式灵活运用,又可演变出多种花样,如扩散可以演变为从上向下、从左向右、从中间向四周和相反方向的扩散,以及从一角向对角方向扩散的特技花样。 实现上述位图显示特技的原理很简单,关键是怎样实现位图的拷贝。在Delphi中有两种拷贝位图的方法,相应地就有两种实现位图显示特技的方法,一种是用Tcanvas对象的方法CopyRect,另一种是调用WindowsAPI的BitBlt函数。 1、调用CopyRect Tc
7、anvas对象与拷贝位图有关的是CopyMode属性和CopyRect方法,其中CopyMode定义拷贝的模式,而Copy Rect执行位图拷贝的操作。当CopyMode定义为缺省值cmSrcCopy时,CopyRect将源画布上的一部分位图拷贝到目标画布上的一个矩形区域内。 2、调用BitBlt函数 这里涉及到了在Delphi中如何调用WindowsAPI。每当生成一个新的项目时,Delphi自动地把WinType和WinProcs单元名添加到所生成单元文件中的uses子句中,这两个单元包含了Delphi调用WindowsAPI所必须的类型定义和例程声明。这样,只需使用正确的参数就可以
8、直接调用WindowsAPI,而不需要再作其它任何声明。 BitBlt及类似的StretchBlt函数是Windows功能强大的图形处理函数,它的功能与TCanvas的CopyRect函数一样,不仅能够将位图或位图的一部分从一处拷贝到另一处,它还可以根据256个不同的光栅操作码将三幅位图结合起来,从而呈现不同的视觉效果。在WindowsAPI函数中,所有的blt函数的鼻祖都是BitBlt函数。 三、程序流程: 四.主要源代码: unit Unit1; interface uses Windows, Messages, Sys
9、Utils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Image1: TImage; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private decla
10、rations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var newbmp:TBitmap; i,j,delay,bmpheight,bmpwidth:integer; xgroup,xcount:integer; begin newbmp:= TBitmap.Create; newbmp.Width:
11、image1.Width; newbmp.Height:=image1.Height; bmpheight:=image1.Height; bmpwidth:=image1.Width; xgroup:=16; xcount:=bmpheight div xgroup; for i:=0 to xcount do for j:=0 to xgroup do begin newbmp.Canvas.CopyRect(Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i), image1.Canva
12、s, Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i)); form1.Canvas.Draw(20,20,newbmp); for delay:=0 to 65000 do begin end; for delay:=0 to 65000 do begin end; end; newbmp.Free; end; procedure TForm1.Button3Click(Sender: TObject); begin c
13、lose; end;end. 五. 运行结果及结论: 运行结果: 结论: 本次课程设计,通过使用可视化开发工具Delphi实现图片的百叶窗效果,我们的实际动手能力以及自学其它系统开发工具的能力有所提高,同时发现平时学习中的许多不足之处。例如,在开发系统过程中,对数据库重要组件包括数据集组件和数据显示组件等的相关属性及方法不够熟悉,还不能在需要时纯熟、灵活地运用,在技术上无法实现梦寐以求的效果,留下许多缺憾。 更好的保证了系统的稳定性,提高了系统的容错能力。 六、参考文献 1.《软件工程Java语言实现》,Stepen R. Schach著,袁兆山等译,机械工业出版社,1999年9月,北京 2.《现代软件工程——管理技术篇》,周之英编著,科学出版社,1999年9月,北京 3.《面向对象技术概述》,山海网络,2002-3-254. 4.《面向对象软件工程方法学实践》,山海网络,2002-3-255. 5.《转引软件工程专家网》 6.《面向对象的软件开发》,leasun翻译,山海网络,2002-3-256., 7.《面向对象语言基础一》,中国程序员开发网络, 8.《面向对象语言基础二》,中国程序员开发网络 9. 《面向对象程序设计》,中国程序员开发网络, 10






