当前位置:文档之家› 基于MFC的图片浏览器的设计与实现毕业论文

基于MFC的图片浏览器的设计与实现毕业论文

基于MFC的图片浏览器的设计与实现毕业论文
基于MFC的图片浏览器的设计与实现毕业论文

毕业论文声明

本人郑重声明:

1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。

2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。

3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。

4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名):

年月

关于毕业论文使用授权的声明

本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据

库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。

论文作者签名:日期:

指导教师签名:日期:

基于MFC的图片浏览器的设计与实现

第1章绪论

图像处理源自于二战中的摄影侦察。当时,处理操作是通过光学方法来完成的,判读工作则是由专门精于此道并能确定炸弹袭击结果的人员来做。随着20世纪60年代后期卫星图像的出现,更多基于计算机的工作便开展起来。彩色合成的卫星图像,有时的确漂亮的让人吃惊,它们已经成为人类视觉文化和对我们这个行星进行认知的一个组成部分。

1980年1月《科学美国人》发表了一幅被称之为“Plume 2”的著名图像,它是1979年3月5日通过宇宙飞船旅行者1号在木星的卫星上探测到的8次火山爆发中的第二次。这幅图像在星际探险图像中是一个里程碑,人们第一次在宇宙中看到了正在爆发的火山。它也是图像处理领域的一次伟大胜利。卫星图像以及宇宙探测器所获取的图像直到近年来才大量应用图像处理技术。在这些技术中,对计算机图像进行数字化处理以得到想要获得的效果,比如使图像的某一部分或某一特性更加明显。

正如计算机图形学一样,直到近几年,图像处理仍然局限在一些实验室里使用,只有这些地方才能提供昂贵的图像处理计算机来满足处理大量高分辨率图像的需要。随着价格低廉的高性能计算机和诸如数码相机及扫描仪这样的图像采集设备的出现,我们已经看到图像处理技术在向公众领域转移。经典的图像处理技术很平常地被图像设计人员用来处理图片和生成图像,比如修复图片的缺陷、改变色彩、对比度等,或者通过图像边缘增强这样的处理来改变整个图片的外观。

目前图像处理的主流应用是图像的压缩,即通过互联网进行传递或在可视电话和视频会议中进行动态视频图像的压缩。可视电话是当今结合计算机图像和传统图像处理的技术,以期产生很高压缩比的交叉领域之一。所有这一切都是图像的“数字表达”这一不可抗拒的发展趋势的组成部分。事实上,20世纪最强大、应用最广泛的图像形式——电视图像,也将不可避免的融入数字领域。

数字图像及其处理技术之所以发展的如此迅速并获得广泛的应用,与其自身的优点是息息相关的。

1. 再现性好

数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,则数字图像处理过程始终能保持图像的再现。

2. 处理精度高

按目前的技术,几乎可将一幅模拟图像数字化为任意大小的二维数组,这主要取决于图像数字化设备的能力。现代扫描仪可以把每个像素的灰度等级量化为16位甚至更高,这意味着图像的数字化精度可以达到满足任一应用需求。对计算机而言,不论数组大小,也不论每个像素的位数多少,其处理程序几乎是一样的。换言之,从原理上讲不论图像的精度有多高,处理总是能实现的,只要在处理时改变程序中的数组参数就可以了。回想一下图像的模拟处理,为了要把处理

精度提高一个数量级,就要大幅度地改进处理装置,这在经济上是极不合算的。

3. 适用面宽

图像可以来自于多种信息源,它们可以是可见光图像,也可以是不可见的波谱图像(例如X射线图像、射线图像、超声波图像或红外图像等)。从图像反映的客观实体尺度看,可以小到电子显微镜图像,大到航空照片、遥感图像甚至天文望远镜图像。这些来自不同信息源的图像只要被变换为数字编码形式后,均是用二维数组表示的灰度图像(彩色图像也是由灰度图像组合成的,例如RGB图像由红、绿、蓝三个灰度图像组合而成),因而均可用计算机来处理。即只要针对不同的图像信息源,采取相应的图像信息采集措施,图像的数字处理方法可适用于任何一种图像。

4. 灵活性高

图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分,每一部分均包含丰富的内容。由于图像的光学处理从原理上讲只能进行线性运算,这极大地限制了光学图像处理能实现的目标。而数字图像处理不仅能完成线性运算,而且能实现非线性处理,即凡是可以用数学公式或逻辑关系来表达的一切运算均可用数字图像处理实现。

鉴于数字图像自身的特点,对其进行处理也不是一步就能完成的过程。可将它分成诸多步骤,必须一个接一个地执行这些步骤,直到提取出有用的数据。而这些步骤中,数据的存储、表示又占有相当重要的地位,可以说,这是图像处理中最基本的技术。因此,掌握不同格式图像的编码解码、读写、显示等方法是必不可少的。

为什么会需要如此众多不同类型的图像文件格式呢?简单的回答就是因为有太多不同类型的图像以及众多不同需求的应用。完整一些的回答还要考虑到市场份额、所有权以及在图像工业中缺乏的必要协调。但是,已经有一些标准的文件格式被开发出来。许多其他图像类型可以通过图像转换软件很容易地转换成这些文件格式,如本设计最终开发出的软件就可以将图像在BMP、PCX、TGA、GIF及JPEG之间互相转换。

与计算机图像相关的一个领域就是计算机图形学。计算机图形学是计算机科学的一个特殊领域,它指的是通过计算机对可视数据进行再现,这包括为显示或打印生成计算机图像,以及为输出到监视器、打印机、照相机或其他能提供图像的设备上生成和处理的任何图像(真实的或人造的)。可以认为计算机图形学是计算机图像技术的一部分,图形设计师所使用的许多工具也正在被计算机图像专业人士所采用。

在计算机图形学中,图像数据的类型被分为两个主要种类:矢量和位图。矢量图像是指仅通过存储关键点来表达线条、曲线和形体的方法。这些关键点足以对形体进行定义,而将它变成图像的过程称之为渲染。当图像被渲染之后,它可以被认为是位图格式,其中每一个像素都具有与之相关的特定值。位图图像(也称之为光栅图像)可由图像模型I(r, c)来表示,其中包含像素数据以及某些文件格式存储的相应的亮度值。尽管有些文件被压缩,但仍属于位图图像的范畴,通常这些类型的图像包含头信息和原始图像数据。文件头必须包含的信息为:(1)行数(高);(2)列数(宽);(3)每像素位数;(4)文件类型。此外,对于某些复杂的文件格式,文件头还必须包含有关所使用的压缩类型的信息,以及创建图

像所需要的其他必要的参数。

本设计所讨论和处理的图像均为位图图像。

第2章软件开发平台及编程模式

在系统的设计与开发中,软件开发平台及编程模式是关键,下面介绍一下开发平台的选择、Microsoft Visual C++及编程模式。

2.1 开发平台的选择

在Windows环境下,目前比较流行的可视化开发工具主要有:Visual C++、Visual Basic、C++ Builder、Delphi、Power Builder及JBuilder等。而本软件采用Microsoft Visual C++ 6.0作为开发工具,并使用MFC Application Framework作为本软件的基本架构。采用C++来进行图像编程的主要原因是,与Java和C#等现代编程语言相比,C++在程序运行的效率、内存使用的可控性和编程的灵活性上具有优势。

图像处理需要处理大量的图像数据,经常使用复杂、费时的算法,因此图像处理程序的效率非常重要。C++代码被编译成汇编语言,可以直接在处理器上运行,效率很高。而Java被编译成字节码,C#被编译成中间语言,都是不能在处理器上执行的,必须经过Java虚拟机或.NET通用语言运行时的JIT编译之后才能执行,因此效率较低。故从运行效率的角度看,采用C++进行图像编程比较合适。

对庞大的图像数据进行处理时需要使用大量的内存,而计算机的物理内存容量往往是有限的,因此需要有效地控制内存的使用。C++直接控制内存的分配和释放,这虽繁琐,且加大了编程的负担,但却能有效地控制内存的使用。Java 和C#引进了垃圾收集机制,将开发人员从内存管理的繁杂任务中解放出来,不再需要直接控制内存的分配和释放。但是,无效内存的收集和释放只能周期性地进行,难以达到有效地使用内存。同样的运算,使用Java和C#所需的内存比使用C++所需的内存要多,即内存的使用率较低。所以,从内存的使用效率来看,采用C++进行图像处理编程更合适。

C++中大量使用指针,使得编程的灵活性很高,这虽然增加了程序出错的可能性,但是便于程序员施展编程技巧来提高程序的效率。Java完全取消了指针,C#极大地限制了指针的使用,这都限制了程序员施展技巧。因此,使用C++进行图像处理编程具有更大的灵活性。而在以C++为核心语言的可视化编程工具中,Microsoft Visual C++ 6.0以其自身许多优异的特性而获得了最为广泛的应用。鉴于以上原因,本设计使用Microsoft Visual C++ 6.0作为软件的开发平台。

2.2 Microsoft Visual C++及编程模式简介

1. Visual C++可视化编程

Visual C++的资源编辑器能以所见即所得(What you see is what you get)的形式直接编辑程序的用户界面,为所有资源分配ID标识号。ClassWizard能把对话

框模板与生成的类定义或与已有的类代码连接起来,为菜单项、控制等资源生成空的处理函数模板,创建消息映射条目,并将资源ID与处理函数连接起来。通过使用AppWizard,程序员的编程工作便简化为用资源编辑器直观的设计界面,完善对话框类代码,在空的处理函数模板处填写响应用户操作的代码,这是一种比较完善的可视化编程方法。

但产品名“Visual C++”也容易误导人,让人认为自己使用的是一个与Microsoft Visual Basic类似的完全可视化的系统。然而,使用Visual C++,开发人员必须真正地阅读和编写C++代码。Visual C++向导可以节省时间和提高精度,但是,程序员也必须理解向导产生的代码,并且,最重要的是,还必须理解MFC库的结构和Windows操作系统的内部工作方式。

2. MFC(Microsoft Foundation Classes)应用程序框架

应用程序框架的一种定义是:提供一般应用程序需要的全部面向对象软件组件的集成集合。

C++流行的一个原因是它可以用类库扩充。类库是可在应用程序中使用的有关C++类的集合。应用程序框架是类库的超集。一般的类库只是一种孤立的类的集合,用来嵌入在任何程序中,但是,应用程序框架却定义了程序的结构。自从MFC库发布以来,MFC已经成为主要的Windows类库。使用MFC类库构建应用程序具有以下优点:

λMFC库是C++的Microsoft Windows API。

λ应用程序框架生成的应用程序使用了标准的结构,具有标准化的用户接口,这对具有标准用户界面的Win32程序来说,可以极大的减轻程序员的负担,使程序员不必过多地考虑界面,可把主要精力放在程序设计上,以提高程序设计的效率。

λ使用应用程序框架的应用程序不仅小,而且运行速度快,具有很大的灵活性。MFC封装了Win32 SDK中的几乎所有函数,能实现Win32系统的任何功能。

λVisual C++工具降低了编码的复杂性。

λMFC库应用程序框架有丰富的特性,如:Windows API的C++接口、通用的(非Windows所特有的)类、“共用根对象”类层次结构、流线式多文档界面(MDI)应用程序支持等。

λ强大的功能。除封装了大部分的Win32 SDK函数外,MFC还提供了应用程序本身的数据和操作及ActiveX、OLE、Internet、WinSock、DAO(Data Access Objects)、ODBC(Open DataBase Connectivity)等操作类。

MFC框架的核心是文档/视图结构(Document-View Architecture),这是一个很好用、但又往往较难以入门的功能。简单的说,文档/视图结构就是将数据和对数据的观察或数据的表现(显示)相分离。文档仅处理数据的实际读、写操作,视图则是显示和处理数据的窗口,视图可以操作文档中的数据。

3. Win32编程

编写Visual C++程序实际上就是一个构造类和把类实例化的过程。由于Windows 95/98/Me/NT/2000是PC平台中应用最广泛的操作系统,而Microsoft力图用一个叫做Win32的标准32位应用程序接口作为对这几个操作系统的共同开发接口,所以

经常采用Win32来代表Microsoft的32位Windows操作系统,因此Visual C++主要用于针对Win32的应用程序开发。

Win32具有抢先式多任务、多线程和线性寻址内存管理等特征,Win32编程的基本要求包括:

λ应用程序的执行独立于硬件设备。

λ应用程序具有图形用户界面。

λ能在Windows 95/98/Me和Windows NT/2000/XP之间透明移植,并可移植到支持Windows NT/2000的RISC硬件平台。

λ高性能的抢先式多任务和多线程管理。

λ高级的多媒体支持。

λ通过OLE 2技术实现多个应用程序的对象定位。

Microsoft为进行Win32编程提供了一套名为Win32 SDK的应用程序编程接口,其中包括上千个Win32系统函数。Visual C++包括一套叫做MFC(Microsoft Foundation Class Library)的C++类库,其中定义了进行Win32编程所需要的各种类。有的类封装了大部分的Win32 SDK中应用程序的编程接口函数;有的类封装的则是应用程序本身的数据和操作;还有的类封装了ActiveX、OLE和Internet编程特性以及WinSock网络特性和DAO(Data Access Objects)、ODBC (Open Database Connectivity)数据访问功能。Win23 SDK和MFC是实现Win32编程的主要工具。

Visual C++的AppWizard工具能自动生成应用程序框架,该框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法。运用Visual C++的资源编辑器(Resource Editor)能直观地设计程序的用户界面,而ClassWizard能把用户界面和程序代码连接起来。程序员要做的就是用MFC类实现框架中未完成的应用程序的特定功能部分。所以使用Visual C++可以实现Win32的可视化程序设计。

4. 消息映射

在使用Visual C++进行Win32程序设计时,消息映射是一个非常重要的概念。Windows应用程序是消息驱动的,应用程序不能直接得到用户所做的操作,如鼠标按键、键盘输入和窗口移动等。这些操作由操作系统管理,操作系统检测到操作事件后,便向相关的应用程序发送消息,应用程序响应这些消息来完成用户的操作。

(1)消息

Windows中的消息是操作系统与应用程序之间、应用程序与应用程序之间、应用程序各对象之间相互控制与传递信息的方式。

消息的基本格式如下:

Message wParam lParam

Message是消息名称;wParam是与消息相关的Word型参数;lParam是与消息相关的Long型参数。

消息主要有以下3类。

λWindows系统消息:Windows系统向窗口发送的消息,由窗口(Window)或视图(View)进行响应处理。这类消息包括除WM_COMMAND消息

之外的名称以WM_开始的其他消息。

λ控制通知消息:控制或子窗口传给父窗口的WM_COMMAND通知的消息。

λ命令消息:在响应用户接口操作时,将产生WM_COMMAND命令消息。

其参数指定了用户接口的标识号,如菜单项和按钮等ID号。

(2)消息映射过程

在使用AppWizard创建应用程序时,MFC应用程序框架设置了相应的消息处理函数来响应消息,以完成相应的操作。消息处理函数是某些类(通常是窗口类)的成员函数和程序员在其中编写响应消息时应进行操作的代码。

框架将消息和它们的处理函数连接起来就是消息映射。消息映射使应用程序在接收到消息时调用对应的消息处理函数来响应和处理消息。

ClassWizard在创建新类时将为其创建一个消息映射,并为每个类能响应的消息和命令增加对应的处理函数。在源代码中,消息映射开始于BEGIN_MESSAGE_MAP宏,结束于END_MESSAGE_MAP宏,中间由一系列预定义的被称为“条目宏”的宏组成。其基本格式如下:

BEGIN_MESSAGE_MAP (classname, parentclassname)

//{{AFX_MSG_MAP (classname)

条目宏1

条目宏2

条目宏3

…………

//}}AFX_MSG_MAP

END_MESSAGE_MAP ()

其中classname为拥有消息映射的当前类名,parentclassname为当前类的父类名。条目宏定义了类所处理的消息与其对应的函数。常用的条目宏类型如表2.1所示。

表2.1 消息映射条目宏

消息类型宏格式说明

Windows消息ON_WM_XXXX WM_XXXX为Windows消息名

命令ON_COMMAND(ID,Function) ID为命令标识号,Function为处理函数名

更新命令ON_UPDA TE_COMMAND_UI(ID,Function) ID为命令标识号,Function为处理函数名

控制通知ON_XXXX(ID,Function) ID为控制标识号,Function为处理函数名

用户定义消息ON_MESSAGE(ID,Function) ID为消息标识号,Function为处理函数名

用户注册消息ON_REGISTERED_MESSAGE(ID,Function) ID为消息标识号,Function为处理函数名

Windows消息的处理函数在CWnd类中进行了预定义,类库以消息名为基础定义这些处理函数的名称,且MFC要求所有消息处理函数声明为afx_msg类型。例如,消息WM_PAINT的处理函数在CWnd类中的声明如下:

afx_msg void OnPaint();

通过ClassWizard在派生类中用同样的原型定义处理函数并为该函数生成消息映射条目,然后由程序员编写处理函数代码,并在派生类中覆盖了其父类的消息处理函数。在有些情况下,必须在派生类的消息处理函数中调用其父类的消息处理函数,使Windows和基类能对消息进行处理。ClassWizard将在生成的处理函数中建议是否应调用父类的消息处理函数及调用的次序。除此之外,用户定义和注册的消息、命令和控制通知都没有默认的处理函数,需要在定义时声明,一般根据其ID名称来为函数命名。

第3章图像格式分析

在前面曾提到,用数字来表示图像有两种不同的方式,即矢量图和位图(又称为栅格、光栅图像或像素图)。在具体的实现上,不同的厂家,在不同的系统上和不同的软件中又采用不同的图像表示方式,即以不同的图像格式来表示数字图像。因此,一个通用的图像处理软件应该能支持多种不同的图像格式,至少应能支持常用的几种图像格式。本设计所实现的图片浏览软件支持以下几种图像格式:BMP、PCX、TGA、JPEG、GIF。这几种图像格式均为在图像处理领域及实际应用中广泛使用的图像格式。

由于图像质量的提高是建立在图像数据量增大的基础上的,而图像数据量的增大将不可避免地降低图像处理的速度,并且给存储和传递带来困难。因此,如何有效地控制数字图像的存储量已成为数字图像处理的一项重要课题。数据压缩技术是控制数据量的基本技术。所谓数据压缩,就是用更少的数据位存储相同容量的信息,目的是更高效地存储信息。各种图像格式都可以采用一种,甚至多种不同的数据压缩算法来压缩数据量,因此图像格式和压缩算法是密切相关的。而开发图像处理软件也应首先了解图像的编码及解码方法。

3.1 图像的编码和解码

能够对数据进行压缩并大大减少其数据量是因为数据存在大量的数据冗余,即存在冗余的、可预测的和不必要的数据。数据量(D)与其所表达的信息量(I)一般并不相等,它们之间存在如下关系:

I=D-du

du≥0

其中,du代表数据的冗余量,如冗余量du=0,则不需要也不能对数据进行有效压缩。即,需要并能够对数据进行有效压缩的条件是du>0。而图像数据中广泛存在着数据冗余。数据冗余一般有4种形式,即统计冗余、信息熵冗余、结构冗余、知识冗余。

利用冗余进行图像数据压缩包括两个相反的过程。

λ数据编码:即对原始图像数据进行编码,以减小其数据量。

λ数据解码:即把编码压缩的图像数据还原成原始的表示形式。由于数据编码和数据解码是互逆的过程,只要研究好数据编码就能处理好数据解码。

根据冗余类型的不同,人们提出了不同的数据编码方法,根据不同的出发点可把数据编码方法进行不同的分类。

(1)以对编码数据在解码后能否完全一致的还原为原始数据为标准,可将数据编码方法划分为如下两类。

λ无失真编码(可逆编码):编码数据进行解码后的数据与编码前的原始数据完全相同,没有任何失真。

λ有失真编码(不可逆编码):编码数据进行解码后的数据与编码前的数据有一定的偏差或失真,但在视觉效果上基本相同。

(2)根据数据编码的实现原理可以把数据编码划分为预测编码、变换编码、信息熵编码、亚抽样与内插编码、矢量量化编码、基于神经网络的编码、分频带编码、结构编码、基于知识的编码和混合编码等10类。其中,信息熵编码中的哈夫曼编码(Huffman Coding)、LZW(Lempel Ziv Welch Compression)编码、游程长度编码(Run Length Coding)和算术编码(Arithmetic Coding)都是常用的无失真图像编码方式。

由于本设计并未涉及到上述所有的编码算法,故在此不再进行一一说明,在后面的内容中会对使用到的算法及其实现进行详细论述。

3.2 BMP图像

BMP图像,即通常所说的位图(Bitmap),是Windows系统中最为常见的图像格式。Windows 3.0以前的版本只支持与设备相关位图DDB(Device Dependent Bitmap)。DDB是一种内部位图格式,它显示的图像依计算机显示系统的设置不同而不同,因此一般不存储为文件,与通常所说的BMP图像不同。在Windows.h中,结构体BITMAP定义了DDB位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:

typedef struct tagBITMAP

{

int bmType; //位图类型,必须设为0

int bmWidth; //位图宽度

int bmHeight; //位图高度

int bmWidthBytes; //位图中每一扫描行中的字节数

BYTE bmPlanes; //颜色层数

BYTE bmBitsPixel; //每一像素所占的位数

void FAR* bmBits; //存放像素值内存块的地址

}BITMAP;

DDB中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的。Windows只能保证系统调色板的前20种颜色稳定不变,所以DDB只能保证正确显示少于20色的位图。Windows SDK提供标准的DDB位图操作函数;MFC中定义了CBitmap类来说明DDB位图,其中封装了与DDB位图操作相关的数据结构和函数。

Windows 3.1以上版本提供了对设备无关位图DIB(Device Independent Bitmap)的支持。DIB位图可以在不同的机器或系统中显示位图所固有的图像。相对于DDB而言,DIB是一种外部位图格式,经常存储为常见的以BMP为后缀的位图文件(有时也以DIB为后缀)。因此,通常所说的BMP图像,即是DIB 位图。

BMP位图文件包括4部分,即位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据,BMP位图文件的结构如图3.1所示。

图3.1 BMP位图文件的结构

下面介绍BMP文件头、BMP位图信息头、颜色表这3个结构体在Windows.h 中的定义。

1. BMP文件头

BMP文件头含有BMP文件的类型、文件的大小、位图文件的保留字、位图数据距文件头的偏移量等信息。定义如下:

typedef struct tagBITMAPFILEHEADER

{

UINT bfType; //位图文件的类型,必须为BM

DWORD bfSize; //位图文件的大小,以字节为单位

UINT bfReserved1; //位图文件保留字,必须为0

UINT bfReserved2; //位图文件保留字,必须为0

DWORD bfOffBits; //位图数据距文件头的偏移量,以字节为单位

} BITMAPFILEHEADER;

2. BMP位图信息头

BMP位图信息头用于说明位图的尺寸等信息,定义如下:

typedef struct tagBIMAPINFOHEADER

{

DWORD biSize; //本结构所占用字节数

LONG biWidth; //位图的宽度,以像素为单位

LONG biHeight; //位图的高度,以像素为单位

WORD biPlanes; //目标设备的级别,必须为1

WORD biBitCount; //每个像素所需的位数,必须是1(双色)、

//4(16色)、8(256色)或24(真彩色)之一

DWORD biCompression; //位图压缩类型,必须是 0(不压缩)、

//1(BI_RLE8压缩类型)或2(BI_RLE压缩类型)之一 DWORD biSizeImage; //位图的大小,以字节为单位

LONG biXPelsPerMeter; //位图水平分辨率,每米像素数

LONG biYPelsPerMeter; //位图垂直分辨率,每米像素数

DWORD biClrUsed; //位图实际使用的颜色表中的颜色数

DWORD biClrImportant; //位图显示过程中重要的颜色数

} BITMAPINFOHEADER;

3. 颜色表

颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,且定义一种颜色,定义如下:

typedef struct tagRGBQUAD

{

BYTE rgbBlue; //蓝色的亮度(值范围为0~255)

BYTE rgbGreen; //绿色的亮度(值范围为0~255)

BYTE rgbRed; //红色的亮度(值范围为0~255)

BYTE rgbReserved; //保留,必须为0

} RGBQUAD;

位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:

typedef struct tagBITMAPINFO

{

BITMAPINFOHEADER bmiHeader;

RGBQUAD bmiColors[i];

} BITMAPINFO;

颜色表中RGBQUAD结构数据的个数由biBitCount来确定,当biBitCount=1、4、8时,分别有2、16、256个表项;当biBitCount=24时,没有颜色表项。

位图数据记录了位图的每一个像素值,记录顺序是在扫描行内从左到右、扫描行之间从下到上。位图的一个像素值所占的字节数如下:

λ当biBitCount=1时,8个像素占1个字节。

λ当biBitCount=4时,2个像素占1个字节。

λ当biBitCount=8时,1个像素占1个字节。

λ当biBitCount=24时,1个像素占3个字节。

Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法如下:

DataSizePerLine=(biWidth×biBitCount+31)/8

这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的4字节对齐。

除了上述的Windows BMP以外,还有一种与其结构相似,但不完全相同的另一种BMP图像,即OS/2采用的BMP。其与Windows BMP的主要区别是位图信息结构(信息头结构和颜色表结构)不同。而它们的图像位数据的存储方式是完全一样的。本设计只讨论Windows系统下的BMP图像,故对OS/2使用的BMP不进行详细分析。

3.3 PCX图像

PCX是Zsoft公司研制的一种常用图像格式,也是在PC机上使用时间最久的一种位图格式。PCX的最新版本支持24位色彩(256色的调色板或全24位RGB),图像的大小可达64k×64k个像素。PCX采用游程长度编码来压缩数据,但是有些情况下压缩效率不高,尤其是对于扫描图像或视频图像。PCX存在许多的版本,其文件头中的一个代码标识了文件所支持的Zsoft产品版本,不同版本的图像特点如表3.1所示。

表3.1 不同PCX版本的图像特点

版本号图像特点

0 基本的单色(2色)或4色图像

1 基本的单色(2色)或4色图像,另加16位色图像

2 基本的单色(2色)或4色图像,另加24位调色板的256色以及全24位RGB色图像

3 基本的单色(2色)或4色图像,

4 基本的单色(2色)或4色图像

5 基本的单色(2色)或4色、256色图像以及多平面真彩色图像

1. 文件结构及文件头

PCX图像由3个部分组成,即文件头、位图数据和一个多达256种色彩的调色板。PCX文件的文件头为固定的128字节。其中包含版本号、被打印或扫描

图像的分辨率(单位为每英寸点数)、大小(单位为像素数)、每扫描行字节数、每像素位数和彩色平面数等信息。文件还可能包括一个调色板以及表明该调色板是灰度还是彩色的一个代码。文件的核心部分是位图数据。位图数据以类似于Packbits压缩法的游程长度压缩形式记录,像素值通常是单字节的索引值,指向调色板中的位置。如果版本号为5,则文件末尾处还有一个单一的位平面和一个RGB值的256色调色板,3种原色各占1个字节。

PCX格式图像的文件头结构如表3.2所示。

表3.2 PCX文件头结构

起始字节字节数内容解释

0 1 Zsoft标志10(0x0a),Zsoft PCX文件的标志

1 1 版本号0:PC Paintbrush 2.5

1:PC Paintbrush 2.8,带调色板

2 1 编码1:PCX游程长度编码

3 1 位/像素每个平面的位/像素值,可能值为1、2,、4或8

4 8 图像大小图像边界极限为Xmin、Ymin、Xmax、Ymax,以像素为单位12 2 水平分辨率打印时,X方向的每英寸点数

14 2 垂直分辨率打印时,Y方向的每英寸点数

16 48 文件头调色板16色的“EGA/VGA”头调色板

64 1 保留字节Zsoft保留,为0

65 1 平面彩色/灰度平面数。PCX图像可以是单彩色,也可以具有多个彩色平面

66 2 每行字节数每个色彩平面的每行字节数,即存储未压缩图像的一个扫描行所需的字节数,总是偶数

68 2 调色板解释1:彩色或黑白2:灰度

70 2 视频屏幕大小X 视频输出的水平像素数-1

72 2 视频屏幕大小Y 视频输出的垂直像素数-1

74 54 全空直到文件结束0

2. 对PCX进行解码的关键

因为在一个PCX文件中可以用到几种不同的记录方法,因此其中必须包含所用方法的标志。在对PCX进行解释时,单靠读取版本号是不够的,最可靠的标志是每像素的位数(文件头的第3个字节)和色彩平面数(文件头的第65个字节),这两个标志与图像色彩数的对应关系如表3.3所示。

表3.3 PCX数据的解释

每像素的位数色彩平面数解释

1 1 单色

1 2 4色

1 3 8色

1 4 16色

2 1 4色

2 4 16色

4 1 16色

8 1 256色

8 3 16.7兆色

平面数说明是否使用了调色板。多于一个平面则没有调色板。如果使用了调色板,则可以由版本号和每像素位数决定PCX图像所使用的调色板类型。

3. PCX图像数据的存储

如果没有使用调色板,则数据是实际的像素值;否则是调色板表项的索引值。当是实际的像素值时,它们按色彩平面和扫描行存储。其存储格式为:

第0行 RRRRRR…GGGGGG…BBBBBB…

第1行 RRRRRR…GGGGGG…BBBBBB…

┇┇

第n行 RRRRRR…GGGGGG…BBBBBB…

如果有两个平面,那么色彩是任选的;如果有3个平面,其颜色为RGB;如果有4个平面,则颜色信息包含RGB和光强。光强位只是给像素一种名义上的较高亮度。

当使用调色板时,数据指调色板的索引值,它们构成一个完整的图像平面,即不会被分解为单独的色彩平面。数据将按如下的简单方式排列(i是调色板中的索引值):

第0行 iiiiiiiiiiiii…

第1行 iiiiiiiiiiiii…

┇┇

第n行 iiiiiiiiiiiii…

i的长度取决于每像素的位数,如每像素位数为4,则i就是半个字节长。

PCX的编码是以最大64个重复单元为一组进行压缩的,不论要记录的是何种类型的数据,都使用同样的游程长度压缩算法。在扫描行中有编码间隔标志,但是,在一个扫描行中的色彩平面之间没有间隔标志。同样,也没有分隔符来标识一个扫描行结束。

4. PCX图像的调色板

任何PCX文件,如果像素位数超过1但又只有一个色彩平面,则都需要使用调色板。PCX图像由3种不同的调色板实现。版本代码为5的文件最容易确

认。如果有一个色彩平面,则它们会在文件结尾处使用256色的“VGA”调色板。其他的基于调色板的文件均使用头调色板,而头调色板又有两种可能的实现,即EGA和CGA。三种不同的调色板介绍如下。

(1)位于文件末尾的256色“VGA”调色板

256色的调色板从文件末尾(EOF)前768个字节开始,而且以十进制码12(十六进制0C)开始(768=256×1字节×3,每个R、G和B都是1个字节)。因此,值为n的像素指向调色板中的“EOF-768+3×n”处;后面3个字节分别为该像素红、绿、蓝的值。

(2)16色的“EGA/VGA”头调色板

头调色板位于第16~第63字节,共48个字节,数据按3元组组织,具有16组3字节数据,每个字节分别对应R、G和B。对于为EGA建立的文件,每种原色只可以有4级,所以每个字节提供的256个值的范围被分成4个区域。每个区域与相应的级相对应:063对应第0级、64~127对应第1级、128~192对应第2级、193~254对应第3级。

(3)“CGA”调色板

这种调色板现已过时,在PCX的版本5及更高的版本中不再使用。这中方法只需要字节16和字节19的最高位数据。

另外,版本5或更高版本的PCX文件能够支持24位真彩色的PCX文件,其色彩平面为3个位平面。

3.4 TGA图像

TGA格式是Truevision公司设计并负责解释的图像格式。TGA也包含了多种变体,TGA文件的第三个字节用来区别不是TGA的文件。该字节的值(二进制整数)及对应的文件类型如下。

λ0:文件中没有图像数据。

λ1:未压缩的,颜色表图像。

λ2:未压缩的,RGB图像。

λ3:未压缩的,黑白图像。

λ9:游程长度(Runlength)编码的颜色表图像。

λ10:游程长度(Runlength)编码的RGB图像。

λ11:压缩的,黑白图像。

λ32:使用Huffman、Delta和Runlength编码的颜色表图像。

λ33:使用Huffman、Delta和Runlength编码的颜色映射图像,四叉树类型处理

1. 数据类型1:未压缩的颜色表(color-mapped)图像

TGA未压缩颜色表图像格式的说明如表3.4所示。

表3.4 TGA未压缩颜色表图像格式说明

2. 数据类型2:未压缩的无颜色表RGB图像

TGA未压缩的无颜色表RGB图像格式的说明如表3.5所示。

表3.5 TGA未压缩的无颜色表RGB图像格式说明

3. 数据类型9:带颜色表的游程长度(Runlength)编码图像

带颜色表的游程长度编码TGA图像格式的说明如表3.6所示。

表3.6 带颜色表的游程长度编码TGA图像格式说明

javascript课程设计

潍坊科技学院 JavaScript课程设计 报告书 设计题目基于javascript的电子商务网站开发 专业班级11软件一 学生姓名江京翔 学号201101080002 指导教师陈凤萍 日期2012.12.24~2012.1.11 成绩

课程设计任务书 院系:软件学院专业:软件技术班级:11软1 学号:201101080002 一、课程设计时间 2012年12月24日至2013年1月11日,共计3周。 二、课程设计内容 使用html+javascript+css 完成以下任务: 1、能够熟练使用css结合html实现网页布局。 2、熟练使用文档对象模型和事件驱动,能够很好的实现web表单的交互式操作。 3、熟练使用javascrip中的对象,实现网页的动态效果。 三、课程设计要求 1. 课程设计质量: ?贯彻事件驱动的程序设计思想,熟练使用javascript中的对象,实现网页特效。 ?网页设计布局合理,色彩搭配合理,网页操作方便。 ?设计过程中充分考虑浏览器兼容等问题,并做适当处理。 ?代码应适当缩进,并给出必要的注释,以增强程序的可读性。 2. 课程设计说明书: 课程结束后,上交课程设计报告书和相关的网页。课程设计报告书的格式和内容参见提供的模板。 四、指导教师和学生签字 指导教师:学生签名:江京翔 五、教师评语:

基于javascript的电子商务网站开发 摘要 JavaScript是开发WEB应用程序不可或缺的一种语言,无论是为web页面增加交互性还是创建整个应用程序,如果没有Javascript,今天的web就不是现在这个样子了。JavaScript是具有正式规范的基于标准语言;然而,正如任何一个web开发人员所告诉你的那样,几乎每个web浏览器对这个规范的解释都不同。 本网站充分的结合了HTML与CSS的结合充分显示了网站的动态效果,是客户与网站能够充分的结合,进行信息的交换信息不断的进行更新。 基于新闻管理网站,国外新闻页面更具有代表性,是网站最标准型之一,通过Javascript 脚本的交互式该页面更好与其他的页面相互结合。 同时通常页面的下载是按照代码的排列顺序,而表格布局代码的排列代表从上向下,从左到右,无法改变。而通过CSS控制,您可以任意改变代码的排列顺序,比如将重要的右边内容先加载出来。 关键字:节假日、日历、Javascript脚本

网页设计大作业

网页设计与制作报告书 课程名称:网页设计与制作 报告题目:几米的空间 专业班级:旅管1002班 学号:100104110221 姓名:杨玉颖 指导教师:胡一波

目录 一、................................. 开发背景 二、................................. 网页设计技巧 三、................................. 网站结构 四、................................. 应用工具方案 五、................................. 频道栏目划分 六、................................. 测试 七、................................. 周期与成本估算 八、................................. 结论

摘要: 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。 关键字:网页制作;制作方法;设计要素;网页测试

一、网页制作开发背景 Dreamweaver以其功能强大、容易上手、界面亲切而著称。它采用所见即所得的方式编辑网页,利用它可以轻松的组织、编辑网页并将其发布到指定的站点上,而且在发布之后还能对更新情况进行监控以更新站点的内容。现在流行的网页制作软件有很多,如Macromedia 公司的Dreamweaver、微软公司的Dreamweaver、还有Adobe Pagemill 3.0--制作多框架,表单和Image map 图像的网页工具、Netscape等等。其中Dreamweaver更以其功能强大、容易上手、界面亲切而著称。它采用所见即所得的方式编辑网页,利用它可以轻松的组织、编辑网页并将其发布到指定的站点上,而且在发布之后还能对更新情况进行监控以更新站点的内容。工具准备好了,可根据你的个人喜好来选择一些素材,如图片、喜欢的文章等。 二、网页制作设计技巧 首先,我们来看一下创建一个只包含一个网页的站点。选择“文件”菜单的“新建”选项,单击“站点”命令,这时新建站点对话框就弹出来了,在“指定新站点位置”文本框中输入新站点的位置,单击“只有一个网页的站点”图标,单击“确定”按钮。这就建立好站点了,我们现在来看一下新的站点里有什么,单击“视图”工具条的“文件夹”按钮。在文件夹列表里有一个网页文件,名字叫做“index.htm”。我们知道,每

VB做一个简单的图片浏览器,谁有代码

VB做一个简单的图片浏览器,谁有代码? 怎么用VB做一个图片浏览器? 要求做到可以打开图片文件, 可以浏览下一张图片,上一张图片, 可以放大和缩小图片, 最难的是做简略图。 哪个高手有相关代码啊!? 有多少发多少啊!谢谢了。 我是VB新手啊!不太会,呵呵。大家多多帮助啊! 最佳答案 我只会做到下面的代码了.其中: Dir1-目录列表控件 Drive1-驱动器列表控件 File1-文件列表控件 Image1-图像控件 Text1-文本框控件 Option1-单选控件(Caption为"通过单击浏览") Option2-单选控件(Caption为"通过双击浏览") Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() On Error GoTo DriErr Dir1.Path = Drive1.Drive Exit Sub DriErr: If Err.Number = 68 Then If MsgBox("请问要重试还是取消?", vbRetryCancel + vbCritical, "硬盘不存在或光驱没有插入磁盘!") = vbRetry Then Resume 0 Else Drive1.Drive = "C:" Resume Next End If End If End Sub Private Sub File1_Click() If Option2.Value = True Then Exit Sub Dim picFile As String If Right(Dir1.Path, 1) = "\" Then

(vb课程设计)图片浏览器修改

图片浏览器设计报告 学院土木工程学院班级土木工程C076 学号074837 姓名郭少华成绩 一、设计思路 1.要达到的目的 ①培养学生综合利用VB语言进行程序设计的能力,主要是利用VB的标准控件进行设计。 ②能够打开常见类型的图片,自动进行缩放,适应PictureBox的大小。 ③在FileListBox中只列出图片文件。 ④使用StatusBar 控件状态条显示图片文件相关信息,包括图片尺寸(单位:象素)、文件大小和日期等。 ⑤使用HscrollBar控件对图片进行缩放。 ⑤可以轮流显示FileListBox中列出图片文件。 ⑥当图片放大超过窗口大小后,可以提供鼠标移动图片显示。 2.关键问题的解决 ①使用Loadpicture方法在图片框里加载符合格式要求的图片。 ②使用FileListBox方法来显示图片。 ③使用PaintPicture方法和改变滚动条的Value属性,使图片能够缩放。 ④使用Timer事件更改FileListBox的ListCount属性,使图片能自动浏览。 ⑤使用MouseMove事件,在图片过大时,通过鼠标移动使图片显示。 二、模块之间的调用关系,或程序流程图 picture 模 块 hscrollbar 模 块pictureload

三、部分程序关键源代码及注释 Private Sub Form_Load() Drive1.Drive = App.Path Dir1.Path = App.Path 'App 是当前的应用程序对象 File1.Pattern = "*.bmp;*.jpg;*.ico;*.wmf" '在FileListBox中只列出图片文件。 Picture1.AutoSize = True Picture2.AutoSize = True '设定自动缩放,适应PictureBox的大小。 = 2000 = sbrCenter = 1800 = sbrCenter = 2400 = sbrCenter = 3000 = sbrCenter '设定StatusBar的数量和属性 End Sub Private Sub Drive1_Change() On Error Resume Next Dir1.Refresh Dir1.Path = Drive1.Drive If Err.Number = 68 Then Err.Clear MsgBox "先将光盘插入!", , "提示" Exit Sub End If '设定错误提示 End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub File1_Click() If Right(File1.Path, 1) <> "\" Then tempstring = File1.Path & "\" & File1.FileName '非根目录时,路径中的最后加上一个反斜杠"\" Else tempstring = File1.Path & "\" & File1.FileName End If '装入选定的文件。 Picture1.Enabled = True Picture2.Picture = LoadPicture(tempstring) Picture1.PaintPicture Picture2.Picture _ , 0, 0, Picture1.Width, Picture1.Height, _ 0, 0, Picture2.Width, Picture2.Height '设定图片的初始状态。 Picture2.Visible = False mysize = FileLen(Dir1.Path & "\" & File1.FileName) Picture2.ScaleMode = 3

JSP程序设计期末大作业

JSP程序设计期末大作业 1.网站的运行环境 在这次大作业中,我使用的软件是NetBeans IDE 8.0和MySQl,(额外使用了名为Navicat for MySQL的辅助性软件,主要是更方便的测试表的内容) 2.设计思路 这次的网页包括三个三个主页面。 存放登录代码的Pnl1.jsp, 存放主静态页面的pnl3.jsp存放留言信息的,liuyanban.jsp。 以及,存放身份验证的Pnl2.jsp,显示此次留言的liuyan.jsp,修改留言的update.jsp,删除留言的delete.jsp。 3.网站功能模块 4.核心技术 4.1jsp JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP 文件,后缀名为(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。 它实现了Html语法中的java扩展(以<%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。 Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet 和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 4.2HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果. 4.3CSS 随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能的增加,HTML变的越来越杂乱,而且HTML页面也越来越臃肿。于是CSS便诞生了。 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 4.4MySQL ySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属 于Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL 作为网站数据库。

简易浏览器设计报告

目录 目录 (1) 一、课程设计的目的与要求 (2) 二、题目说明 (2) 2.1程序开发背景................................................................... 错误!未定义书签。 2.2开发工具介绍 (2) 三、总体设计 (2) 3.1.系统开发平台: (2) 这个简易浏览器由Java语言编写,用Eclipse编译执行 (2) 3.2.系统流程图: (3) 3.3功能结构图: (3) 四、详细说明 (4) 4.1 系统实施 (4) 五、遇到的问题和解决方法 (9) 六、课程设计总结 (10)

一、课程设计的目的与要求 加深学生对面向对象概念以及JAVA面向对象程序设计思想的理解和掌握;使学生熟悉开发一个项目的基本过程,培养学生分析问题和解决问题的能力,增强学生的动手能力。为后续学习和应用打下一定的基础。 二、题目说明 本程序实现一个简单的浏览器。用户通过在URL输入框中输入要下载的网络页面的网址,并点击浏览器界面上相应的按钮,或直接按回车键,就能完成网络页面下载的功能。同时,它还支持浏览本地HTML文件,用户在输入框中输入文件所在盘符及具体路径,并按回车键,或者点击界面上相应按钮,实现浏览本地文件的功能。它能够实现页面的文本链接,能够显示网页图片,并能够通过相应按钮的操作返回上一次访问的页面,还可以通过相应按钮返回后退之前访问的页面。该简易浏览器能帮助用户实现基本的网页浏览功能。 2.2开发工具介绍 三、总体设计 3.1.系统开发平台: 这个简易浏览器由Java语言编写,用Eclipse编译执行

web网站个人主页课程设计

引言 目录 第一章概述 (1) 1.1 本课题的研究背景 (1) 1.2 本课题的研究意义 (1) 1.3 现行研究存在的问题及解决办法 (1) 1.3.1 需求分析问题 (1) 1.3.2 代码实现问题 (2) 第二章系统分析 (2) 2.1系统需求分析 (2) 2.2 采用的关键技术介绍 (2) 2.2.1 https://www.doczj.com/doc/7f5669740.html,简介 (2) 2.2.2 Access数据库简介 (3) 2.3 可行性分析 (3) 2.3.1 技术可行性 (3) 2.3.2 操作可行性 (3)

第三章系统概要设计 (5) 3.1 系统总体设计 (5) 3.1.1 运行环境 (5) 3.1.2 系统流程 (5) 3.1.3 系统结构 (6) 3.2 系统接口的概要设计 (7) 3.2.1 用户接口 (7) 3.3 数据库概要设计 (8) 3.3.1 逻辑结构设计 (8) 3.3.2 物理结构设计 (9) 第四章系统详细设计 (10) 4.1 系统界面的详细设计 (10) 4.1.1 普通用户首页的详细设计 (10) 4.1.2 留言界面的详细设计 (11) 4.1.3 后台首页的详细设计 (11) 4.2 数据库详细设计 (12) 4.2.1 表的详细设计 (12) 第五章系统实现 (15) 5.1 系统开发环境 (15) 5.2 系统实现 (15) 5.2.1 客户端系统实现 (15) 5.2.2 后台管理系统实现 (17) 5.3 系统部署 (17) 5.3.1数据库设置 (17) 5.3.2 服务器端运行设置步骤 (18) 第六章性能测试与分析 (19) 参考文献 (20)

系统综合应用开发大作业

2016-2017学年第一学期《系统综合应用开发》大作业课题名称:Hadoop集群搭建及MapReduce应用 班级:13级软工数据库1班 学号:123456 姓名:123456 成绩: 2016年10月

一、Hadoop集群的搭建与配置 1、节点准备 此部分主要描述节点的规划,包括IP的分配,NameNode和DataNode的配置。 1、设置IP 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件: DEVICE=eth0 --网卡名称 BOOTPROTO=static --获取静态IP HW ADDR=00:E0:4C:F8:3B:CE --机器MAC地址 IPADDR=10.8.3.240 --IP NETMASK=255.255.255.0 --子网掩码 NETWORK=10.8.3.254 --默认网关 ONBOOT=yes 2、设置hostname 在所有机器的/etc/hosts 文件下添加: 10.8.3.240 namenode 10.8.3.246 datanode1 10.8.3.239 datanode2 10.8.3.249 datanode3 10.8.3.238 datanode4 10.8.3.251 datanode5 注:为了使机器辨别到hostname,必须重启机器。

2、Java环境安装 1.进入安装目录 cd /home/magic/gshare/linux下构造java开发环境我的文件夹目录为: 2.赋予权限 sudo chmod u+x jdk-6u13-linux-i586.bin 3、执行安装 sudo ./jdk-6u13-linux-i586.bin,进行编译。 接着一直按回车键,直到出现选项:

简单IE浏览器设计报告

C#程序设计 设计说明书简易IE浏览器的设计与实现 学生姓名:郭成成 学号:1103380106 班级:计算机(一)班 专业:计算机应用技术

指导教师:胡老师 课程设计任务书 2011—2012 学年第二学期 课程设计名称:C#课程设计 设计题目:简易IE浏览器的设计与实现 完成期限:自 2012 年 11 月 8 日至 2011 年 11 月 29 日共 3 周 设计依据、要求及主要内容: 根据程序设计所学知识,设计与实现一个简单浏览器,该简单浏览器设计的内容和功能要求如下: (1)有合理的首页页面设计,背景柔和。 (2)有多个按钮,比如说前进、后退、刷新删除等。 (3) 输入地址栏,支持所有的网址,并有转到功能。 (4)设计登陆页面。 (5) 可以存储网址,进行网内连接。 (6)是利用 C#编写程序,该浏览器简单但功能齐全。

(7) 使用时同样可以最大化最小化。 (8)按钮是利用画图工具进行拷贝下来的。 (9) 地址默认为百度。 要求:系统功能设计基本完善,并写出详细的设计说明书。 摘要 关键词:关键词:前进、后退、刷新、输入合法地址、运行程序,在网内搜索,使用vs2005 中的 C#编写程序,利用画图工具。拷贝前进、后退按钮。 1 课题描述 利用C#编写简单的程序,创建一个简易IE浏览器,包含基本的功能,培养编写程序 的兴趣。实践中了解浏览器的一些特性 2 程序设计流程图 2.1 系统说明 使用 win7 系统,vs2005 中的控制台应用程序,设计主界面,并拖放按钮。具有一 般浏览器的基本功能,前进、后退、刷新、地址等。在输入地址栏。设默认地址为百度,便于使用,刷新功能,在网速不是太好,有一点卡时,刷新一下,主界面可以最 大化和最小化。使用绿色为边框颜色,用画图工具拷贝文件按钮,设有六个小按钮,包括前进、后退、删除、刷新、转到等按钮。 2.1 主界面的设计主界面用纯白色背景,界面以中等大小为宜。使用绿色为边框颜色,用画图工具拷贝文件按钮,设有六个小按钮,包括前进、后退、删除、刷新、转到等按钮。主界面用纯白色背景,界面以中等大小为宜。

(完整word版)Java课程设计的图片浏览器的讲解

一.课程设计的任务及要求 二.需求分析 图形化界面(GUI)编程,编写一个图片浏览器程序可以支持““.GIF”,“.JPEG”,“.jpeg”,“.TGA”,“.JPG”,“.jpg”等格式,单张打开图片,可以将同一目录下的图片按缩略图打开按“上一张”“下一张”按钮可以显示相应图片。运行Applet时,图像不是一气呵成的,因为方法不是吧图像完整的装入内存再显示的。于此相反,方法创建一个线程,该线程与Applet的原有线程并发执行,一边装入一边显示,从而产生上了不联需显示的现象。为了提高图像才显示效果,可以采用双缓冲技术:首先把图像装入内存,然后再显示在屏幕上。 三. 设计思路 3.1界面设计 选择图片按钮:主要用dir函数实现图片的遍历。 上一张,下一张:通过做标轴回调函数实现。 由于本软件为单机软件,不需要大量的数据读写和数据交换,实现上、下功能要求只能读取PictureBox控件当前加载的目录,读取当前路径,创建一维数组。 frame = new Frame("PictureViewer"); Panel pb = new Panel(); Button select = new Button("选择图片"); previous = new Button("上一张"); next = new Button("下一张"); select.addActionListener(this); previous.addActionListener(this); 3.2.图像加载: Applet常用来显示储存在文件中的图像,多数Applet使用的是GIF或JPEG 格式的图像文件。需Applet加载图像只需首先定义Image对象,然后使用getImage()方法把图像和文件结合起来即可。 image_width = bi.getWidth(this); image_height = bi.getHeight(this); double image_proportion = 1.0 * image_height / image_width; System.out.println("image: w "+image_width+" ,h "+image_height+" ,p1 "+image_proportion);

Android超炫图片浏览器代码

Android超炫图片浏览器代码 使用过Android自带的gallery组件的人都知道,gallery实现的效果就是拖动浏览一组图片,相比iphone里也是用于拖动浏览图片的coverflow,显然逊色不少。实际上,可以通过扩展gallery,通过伪3D变换可以基本实现coverflow的效果。本文通过源代码解析这一功能的实现。具体代码作用可参照注释。 最终实现效果如下: 要使用gallery,我们必须首先给其指定一个adapter。在这里,我们实现了一个自定义的ImageAdapter,为图片制作倒影效果。 传入参数为context和程序内drawable中的图片ID数组。之后调用其中的createReflectedImages()方法分别创造每一个图像的倒影效果,生成对应的ImageView数组,最后在getView()中返回。 /* * Copyright (C) 2010 Neil Davies * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.doczj.com/doc/7f5669740.html,/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * This code is base on the Android Gallery widget and was Created * by Neil Davies neild001 'at' gmail dot com to be a Coverflow widget * * @author Neil Davies */ public class ImageAdapter extends BaseAdapter { int mGalleryItemBackground; private Context mContext; private Integer[] mImageIds ;

ASP设计大作业

《A S P.N E T》 课程大作业 ——学生评教管理系统设计报告 西安石油大学经济管理学院 班级:商务1402 组号:6组 组员:王煊南少兵

第1章系统概述 (1) 第2章相关技术 (2) 第3章系统分析 (3) 第4章系统设计 (4) 第5章系统实现 (5) 第6章总结 (6)

(1)章标题(黑体,小二号,加粗,居中) 每章另起一页!!! (2)节标题(字体,宋体,四号,加粗) (3)目录和正文(字体,宋体,小四号) 正文行间距:20磅 本页显示的内容不要出现在最终提交的报告中(定稿后删掉本页)!!!

第1章系统概述 1.1 系统背景 教育理论与教育实践如何统一是当前教育界亟待解决的问题。教学评估系统是教育理论和教育实践的中间环节,教育评价有助于教育理论与教育实践达到统一。评教系统是在教学的过程中,通过学生在学习过程中的反馈信息,对教师的授课情况的一项调查,目的是为了及时的了解教师与学生之间在教与学的过程中所遇到的问题,有针对性的开展教学工作,提高教学质量。教学评估在高校的整个教学过程中,起着很大的作用。 1.2 开发目的 随着因特网技术的飞速发展为校园带来了全新的信息产业时代,以往的教学评价分析工作将得到彻底的改革和规范。因为过去传统的教学评价与分析方式已经不能满足膨胀的校园信息管理剧增的客观要需求,这就需要一种全新的评价及分析方式—计算机评价分析[2]。利用教学评价系统,可促进教师教学质量评价工作的规范化、程序化,提高工作效率,保证评价工作的质量。以数据库管理系统为核心,以计算机网络为平台,向校内各部门、各教职工提供方便、及时、准确的信息查询,实现数据共享,满足学校各种管理的需要[3]。以此来缓解手工评价及分析的压力,并为学生和教师提供方便快捷的教学评价及分析方式,这对促进学校建设有积极的意义。根据现在的基于Web的学生评教系统的实现功能和应用技术来看,主要呈现以下几点: 1)系统普遍性能较差,工作效率低,数据库陈旧,系统结构不完 善,严重阻碍了教学评价及分析工作的开展。 2)系统自动恢复性能较差,当出现错误时不能迅速恢复。 3)系统内部结构单一,只能处理较少的评价及分析工作,而且登陆 人数有限,不能满足大量用户同时登录使用。 4)系统查询功能单一。 5)系统操作复杂,操作费时方法落后,影响教学评价分析工作的效 率。 因此,新的教学评价分析系统在保留原先系统的优点的同时还要解决以上这些缺点。新的教学评价分析系统性能优秀,结构完善,容易掌握,使教学评价工作更快速更有效地完成。新系统克服了老系统只能处理较少评价的缺点,支持管理员,学生,教师等多种权限的登录,能满足大量用户的使用。而且新的教学评价分析系统操作简单,易于掌握,大大加快了教学评价和分析工作的

基于java的浏览器的设计与实现

基于java的浏览器的设计与实现——GUI界面子系统 摘要 21世纪人们对互联网的依赖越来越大,而网页浏览器作为上网浏览信息所必需的软件之一,已经得到了广泛地应用。在IE占据了大部分浏览器市场的情况下,国内外开发商依然没有放弃这个巨大的市场,各式各样的浏览器被开发出来抢占市场。网页浏览器的开发与应用已成为了计算机领域近年来的一大热点。 本文用软件工程的开发过程,详细论述了浏览器的分析、设计及代码实现,最终实现一个具有能同时浏览多个网页,可查看收藏夹,可以实现打开网页,超链接监听并响应,前进和后退等基本功能的浏览器。本文以一个实际运作的浏览器Browser为主轴介绍浏览器的设计理念与方法,同时讲述浏览器中各个模块如何互相协同运作,来完成一个呈现网页的工作。通过下载JDIC类库,实现了浏览器选项卡,从而达成了一个窗口显示多个网页的目的。收藏夹的实现是将收藏夹集合序列化到数据文件中,这样收藏夹被持久化解决了收藏夹的问题。另外,Java Swing技术也是本文介绍的浏览器所使用的一种主要的技术,通过使用各个组件,并增加监听器和事件处理等操作,最终形成一个具有一定事物处理能力的浏览器的界面部分。 关键词:浏览器,JDIC类库,Java Swing,事件

Based on the design and implementation of a Java browser Abstract In the 21st century, people rely on the Internet is more and more big, the web browser as one of the necessary software, surfing the Internet information has been widely used. In the case of occupying most of the IE browser market, developers still didn't give up the huge market at home and abroad, developed a variety of browser is preempted market. The development and application of web browser has become a focus in the computer field in recent years. In the development process of software engineering, this paper detailed discusses the analysis, design and code implementation of the browser, and ultimately achieve a have to browse multiple web pages at the same time, to view the favorites, can realize open a webpage, hyperlinks to monitor and respond to, the basic function such as forward and backward in the browser. Based on an actual operation of the Browser Browser Browser design concept and method of introduction for main shaft, various modules tells the Browser how to work together with each other at the same time, to finish the work of a rendered page. By downloading the JDIC class library, the realization of the browser TAB, which reached the purpose of a window to display multiple web pages. The realization of the favorites are favorites collection serialized into a data file, this collection double coverlet persistent solved the problem of the favorites. In addition, the Java Swing technology is also introduced in this paper by the browser using a kind of main technology, through the use of the individual components, and adding listeners and event handling operations such as, eventually forming a certain things browser interface part of processing capacity. Keywords:The browser,The JDIC class library,Java Swing,The event

图片遮罩效果(附代码及应用方法)

图片遮罩效果(附代码及应用方法) 上面遮罩图片浏览器代码: <DIV align=center><EMBED src=https://www.doczj.com/doc/7f5669740.html,/tpll/qhbkwtzd.swf width=880 height=585 type=application/x-shockwave-flash quality="high" flashvars="tpt=https://www.doczj.com/doc/7f5669740.html,/c/2014-08/26/&a mp;tp=11/201408261159377161-761703.jpg|11/20140826 1159586251-761703.jpg|12/201408261200194211-76170 3.jpg|12/2014082612004111-761703.jpg|12/20140826120 109261-761703.jpg|12/201408261201316361-761703.jpg &amp;tpw=图片网址不同部分简写 &amp;cc=1024*683&amp;解说词参数列表 &amp;qhfs=0&amp;qhsj=15&amp;txbh=01| 16|31|47|60|81|90" invokeURLs="false" wmode="transparent" allowNetworking="internal" allowScriptAccess="never"></DIV> 这是一款通用图片浏览器,可以根据图片的大小,决定SWF(图片浏览器)宽度和高度的。有百余款图片切换特效,可任意选择。可配每张图片的简单解说词。不需要上传

一个简易的JavaScript网页图片浏览器

效果演示: https://www.doczj.com/doc/7f5669740.html,/slideshow/ 难点:响应鼠标事件实现滑动效果 项目目录: files文件夹下的几个文件夹都是放的图片,fullsize里面是大图,thumbs里面是小图。其中那个.png文件是测试用的图片 页面部分: