《嵌入式微处理器课程设计》报告格式一、任务书设计目标能运用嵌入式相关知识制作出一个完整的电子相册,体现出媒体的多样性;整个电子相册能体现出课程的体系结构,并能制作出动画效果实现某些知识点的讲解,在整个电子相册中,交互性应贯穿始终。电子相册设计需求电子相册支持jpg、png、gif、xpm、和bmp格式图片的浏览,并可以对图片进行放大、缩小或旋转角度显示。电子相册还支持幻灯片模式浏览图片,并可以对图片进行删除等操作。二、功能描述(1)显示图片列表功能:在图片文件所在目录读取所有扩展名为jpg、xpm、png、bmp、gif格式的图片文件,并将读取的文件按顺序用相同大小的缩略图的形式显示在图片列表界面上。如果图片数量超过当前屏幕显示范围时,可向下滚动显示。其它格式文件忽略不读。(2)图片选中显示功能:在图片列表中选定某个图片时,此图片的缩略图成凸起放大状态,表示选中此图片并将对此图片进行操作。(3)删除图片功能:对当前选中的图片可执行删除操作,选择删除后会进行删除确认提示,若选择彻底删除图片则从物理设备上和图片列表上将该图片删除。(4)浏览图片功能:对选中的图片可以执行浏览的功能,若图片原本大小超过图片浏览区域(即相框)的大小,则会自动调整变成适应图片浏览区域的最大尺寸。若图片原本大小没有超过图片浏览区域大小,则以原始尺寸在图片浏览区域显示。可对打开的图片进行放大、缩小、向左旋转、向右旋转、全屏模式与返回原始尺寸等一系列的浏览模式操作。(5)图片放大功能:在当前图片尺寸大小的基础上,图片可逐级放大,以尺寸的0.5倍递增,最大可放大到打开图片时显示的初始尺寸的3倍。(6)图片缩小功能:在当前图片尺寸大小的基础上,图片可逐级缩小。最小可缩小到打开图片时显示的初始尺寸的0.5倍。(7)图片旋转功能:打开图片后,可在图片的任意状态下对图片进行旋转操作。可在当前状态下,将图片向左或向右旋转,每次旋转角度差值为90°。图片旋转后会自动适应窗口大小,完整显示图片。(8)图片移动功能:图片执行放大功能后,图片可在浏览区域进行移动。(9)图片全屏显示功能:可以将图片执行全屏显示。为了支持点击操作,全屏显示时不覆盖相关功能按钮。(10)幻灯片模式自动浏览功能:可从当前选定的图片开始执行自动播放图片功能,初始设定播放速度为3秒间隔,可以加速或减速播放。(11)给用户提供友好的图形交互界面,并合理安排界面元素布局,使其美观并且方便用户操作。三、程序运行界面说明(注:含程序运行指导说明)1上一张2下一张3缩小4放大5暂停6播放7向左旋转90度8向右旋转90度9添加图片四、程序处理流程图片列表界面为电子相册的入口和出口。通过图片列表功能菜单,可执行打开图片进行浏览的功能和删除图片的功能,并根据所选择的功能进入图片浏览界面或显示删除文件提示框。进入图片浏览界面可通过图片浏览功能菜单,对当前显示的图片执行各种操作,从而进入相应的图片浏览界面。放大图片的显示,缩小图片的显示,旋转图片的显示,图片全屏的显示和自动浏览图片的显示均将显示在图片浏览界面。而各种模式下的图片浏览界面下,均可以通过功能菜单对其他浏览模式进行选择。图片列表删除图片功能选择缩小显示图片打开图片全屏显示图片自动浏览图片功能选择放大显示图片图片逆时针旋转图片顺时针旋转正常显示图片五、任务的定义、实现以及主要模块说明电子相册程序定义了5个类,AlbPicChooseForm为电子相册图片列表界面类,AlbMenuForm为电子相册图片列表功能菜单类,AlbPicViewForm为图片浏览类,AlbOptionForm为图片浏览界面的功能菜单类,AlbDelForm为图片删除类。AlbPicChooseForm和AlbMenuForm成单向关联关系。AlbMenuForm和AlbDelForm、AlbPicViewForm分别成单向关联关系。AlbPicViewForm和AlbOptionForm成双向关联关系。其中,对图片的各种处理均在AlbPicViewForm类中实现,如放大、缩小、逆时针旋转、顺时针旋转、全屏显示、图片移动显示等。电子相册功能实现用户进入电子相册后,首先显示图片列表。图片列表由12个Label组成,将从当前目录下扫描jpg、xpm、png、gif、bmp格式的图片并将其名称存入链表中,通过load函数加载图片到一个QImage类型的变量中,然后将此变量与Label关联起来,以实现图片在Label上的显示。值得注意的一点是,此Label上加载的图片均为真实图片的缩略图,而不是图片本身。如果图片的缩略图已经存在,则将缩略图直接显示在Label上,如果缩略图不存在,则生成图片的缩略图。如果该图片文件为非法图片格式文件,则在该Label上载入一个标志着读取图片文件失败的图片。缩略图是图片的真实缩影,在缩小时保持原图片的比例。开始将所有图片文件名存入链表结束是否有jpg、xpm、png、gif、bmp格式图片YesNo建立文件列表迭代器it扫描文件目录下所有文件包括隐藏文件设定图片列表显示界面格式(4*3)for(i=0;i12;i++)图片文件是否是it中最后一个文件循环结束显示加载图片的第i个Label设置第i个Label隐藏YesNo是否存在迭代器中图片的缩略图NoYes加载图片缩略图到第i个Label根据文件头判定是否是正确的图片格式No设定此图片缩略图为名为“错误标志图片”的图片根据原始图片比例设定缩略图大小生成图片缩略图Yes图片列表显示流程图图片选中状态功能实现首先设定图片选中状态的表示方式,即缩略图图片的尺寸放大,满足缩略图宽为80像素或高为60像素中任一条件,保持图片的宽高比例与原图片宽高比例相同,选中状态下的图片缩略图在图片列表界面上凸起显示。如果图片是标志为格式不正确的图片,则该图片被选中或离开选中状态时不做放大缩小动作以示与正常图片的区别。且根据不同的按键按下,进行不同位置图片的选中。开始结束switch(按键)设定选中图片的状态及默认选中图片图片列表图片整体向上滚动一排,呈选中状态的图片改变当前图片是否是界面上最后一排?左方向键下方向键图片链表中当前图片位置-1上,是否有图片存在?图片链表中当前图片位置+4上,是否有图片存在?YesYes呈选中状态的图片为下一排的同一列图片NoNo当前图片的前一张图片呈选中状态右方向键图片链表中当前图片位置+1上,是否有图片存在?当前图片的后一张图片呈选中状态图片列表图片整体向下滚动一排,呈选中状态的图片改变当前图片是否是界面上最上一排?下方向键图片链表中当前图片位置-4上,是否有图片存在?YesYes呈选中状态的图片为上一排的同一列图片No选择图片流程图删除图片功能实现在图片列表界面上对选中图片要进行删除操作时,需注意两点,一点就是待删除的图片是否是图片列表的最后一张图片,若是的话,则删除图片后,被删除图片的前一张图片呈选中状态。否则,删除图片后,被删除图片的后一张显示为选中状态,且此图片删除后,图片文件链表中删除图片节点,其列表界面中图片的位置要统一向前移动一个位置。开始删除目录下图片,并删除链表中图片名结束图片是否是图片链表中的最后一张图片No设定选中当前图片链表中的最后一张图片选择待删除图片Yes设定选中当前图片链表中的后一张图片删除目录下图片,并删除链表中图片名调整图片列表界面图片显示删除图片功能实现流程图图片的放大功能的实现设定md_ChangeSize来记录放大的倍数,并且当放大到最大倍数时,将菜单项上的“放大”改成相应的提示菜单条“已经达到最大,并且根据放大倍数在浏览区域的相框上绘制图片。开始结束md_ChangeSize等于3NoYesmd_ChangeSize等于0.5改变菜单条目状态调用Scale()函数得出新的pixmap调用repaint()函数画出新的pixmapYesNo图片的放大功能实现流程图图片缩小功能的实现可在图片的任意大小状态下进行缩小,直到图片缩小到初始打开图片显示尺寸的0.5倍大小。缩小图片时要保证缩小后的图片依然居于相框中间位置。在图片非全屏模式和全屏模式两种情况下,判定当前状态的图片与初始时显示的位置移动的距离大小,并根据不同的图片旋转角度,据此距离大小计算并设定相应的图片在相框中的位置坐标。开始改变md_ChangeSize的值结束md_ChangeSize等于0.5NoYesmd_ChangeSize等于0.5改变菜单条目状态边界调整,修正mi_MoveX与mi_MoveY的值调用Scale()函数得出新的pixmap调用repaint()函数画出新的pixmapYesNo图片缩小功能实现图片移动功能实现图片在放大到1.0倍以上时,可进行图片在相框内的上下或左右移动显示。图片在全屏模式下选择放大时图片也可以进行上下或左右移动显示。为保证在移动时正确显示在相框内的图片视区,需要将图片在每次移动时进行重画,并计算图片位置的移动距离。开始取得当前鼠标坐标位置并根据旧的鼠标坐标位置mi_OldX、mi_OldY计算得出坐标移动参数mi_NewX、mi_NewY结束md_ChangeSize小于等于1.0NoYes边界调整,修正mi_MoveX与mi_MoveY的值记录下当前的鼠标坐标mi_OldX、mi_OldY调用repaint()函数画出新的pixmap根据mi_NewX、mi_NewY更新mi_MoveX、mi_MoveY图片移动功能实现流程图相框内图片显示功能的实现不同的选择下,相框内的图片显示状态是不同的。对于图片的显示需要考虑的情况有是否是全屏模式,当前的缩放倍数和当前的旋转角度,并需要根据判断图片是否移动来对显示边界进行检测及计算。根据图片缩放和旋转参数和检测到的移动距离,利用矩阵计算出新图片所需的各个参数,根据这些参数生成显示在相框内的图片。最后将图片绘制在相框内,即当前的图片浏览区内。开始以图片原始大小显示,图片的像素宽高参数mi_WidthSize和mi_HeightSize为原始图片宽高值结束是否图片比相框小NoYes读取图片缩放参数mi_ChangeSize,把它与mi_WidthSize、mi_HeightSize相乘,把结果分别与原始图片的宽高相除,得出缩放倍数读取旋转角度参数mi_Angle将原始图片按计算出的缩放比例缩放,并按mi_Angle中的角度旋转调用repaint()函数将mQP_PixmapScaled在相框中显示读取用户操作,改变对应参数比较图片大小与相框大小调整显示图片的像素宽高参数mi_WidthSize和mi_HeightSize使之可以按原始比例大小在相框中最大化显示将得到的图片保存在mQP_PixmapScaled中图片显示功能实现流程图六、调试与排错过程说明七、课程设计心得体会(注:含进一步改进方案和应用建议)由于时间和个人能力的限制我们仅实现了电子相册的基本功能。在电子相册的设计中,还存在着许多的不足之处。我们需要做的事情还有很多,电子相册的界面的列表模式切换,如缩略图列表、文件名列表等的切换,和电子相册浏览图片时的切换效果等。八、附录:(注:含所有源代码详解)注:课程设计报告的电子稿、所有工程程序代码及运行结果的图片都以学号+姓名来命名并打包后发至qrs12dz@163.com