精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
本系统为了实现一个人机交互的数字化剪纸平台,将整个制作流程进行阶段划分,其中把关键的部分模块化。主要分为:纸型管理模块,图形设计模块,成果展示模块、其它辅助模块等几个模块。
纸型管理模块:是整个系统的核心模块之一,在本模块中不仅完成对纸张的大小、颜色、形状进行设置,还要设置对折剪纸前纸张的对折方式。其中,对折算法的设计是关键,本研究在建立对折模型时,总结纸张折叠后剪裁图形成像规律及确定折叠重合位置关键点。具体程序实现方法采用图像的镜像变换。
图形设计模块:本模块以绘图工具栏的形式来展现,通过基本图元按钮绘制剪纸图形元素。即:绘制直线、拆线、矩形、圆弧线、椭圆(圆)、扇形、多边形。并实现将选取的图形元素进行平移、旋转、镜像等简单编辑。
成果展示模块:显示纸张经过设计剪裁后展开的效果。通过人机交互的剪纸设计,能够使设计者在交互中体验到乐趣及成就感,让人们感受在数字技术时代下的新的剪纸艺术设计形式。
其它辅助模块:本模块包含基本的输入/输出及图形文件的存储与打印。
Visual C++功能强大、操作界面友好,能放便快捷地实现各种功能。Visual C++是Windows环境下最主要的C++开发环境,它支持面向对象编程,并提供可视化编辑环境。
使用Visual C++中的向导功能,是帮助、引导用户工作的一个非常便捷的工具。在Visual C++中,用MFC AppWizard来创建一个Windows程序的基本框架结构,创建完应用程序框架后,可以使用类向导创建新的类、定义消息函数、覆盖虚函数、为控件添加变量等。Visual C++的Custom AppWizard允许用户自定义和修改用户创建工程的参数。
2、剪纸的图形绘制采用矢量图格式。
计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真。Adobe公司的Freehand、Illustrator、Corel公司的CorelDRAW是众多矢量图形设计软件中的佼佼者。大名鼎鼎的Flash MX制作的动画也是矢量图形动画。
矢量图像,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。既然每个对象都是一个自成一体的实体,就可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率显示到输出设备上。
矢量图与位图最大的区别是,它不受分辨率的影响。因此在印刷时,可以任意放大或缩小图形而不会影响出图的清晰度。
(一)背景
开发一个图形处理系统,能够绘制简单的图形并进行剪纸艺术表现。
(二)功能需求
即:纸张的形状:矩形
大小:可以设置具体数据,如:矩形的长宽。
颜色:可任设颜色
对折:以纸张固定的底或左边线折叠。
不规则折叠:以任意轴线折叠—角度画的直线为折叠线
要求:用对话框设置折叠的方式(向X或Y轴折叠的次数)
窗口内显示折叠之后纸张的图形(形状)
即:绘制直线、矩形、圆弧线、椭圆(圆)、多边形、拆线。
要求:在折叠后的纸张上绘制所需要的图形。
在应用程序越来越庞大的今天,在应用程序设计中保持良好的程序设计风格,建立良好的应用程序架构尤为重要。只有有了良好的程序架构,程序才能有良好的扩展性、可读性、可修改性、可维护性等。
本系统采用MFC支持的文档视图结构中的单文档界面SDI结构。文档管理存储数据和管理数据的打印,并协调多个数据视图,视图显示数据并管理用户与数据之间的交互,包括选择和编辑。MFC文档对象将数据读入或写入永久存储区。该文档还可能提供到数据所驻留的任何位置(如在数据库中)的接口。一个单独的视图对象可管理数据显示,包括从在窗口中呈现数据到用户选择和编辑数据。该视图从文档获取显示数据,并将任何数据更改传递回文档。
为了实现矢量图元的模型化处理,本系统合理组织了类层次图,把功能合理安排到图元类,图元工具类里,实现了图元的可操作性。图元类负责图元自己的处理,图元工具类负责图元和视图和文档之间的交互。
图元类层次图如下:
CDrawObj是基类,里面封装了基本的属性和方法,基本的属性如位置,基本的方法如绘制Draw。
CDrawBlock代表实体块。
CDrawEllipse代表了点、圆、圆弧和椭圆。
CDrawGroup代表了组合图元。
CDrawPoly代表了线、矩形、三角形、多边形、开口折线和闭口折线。
CDrawText代表了文本。
CGifObj代表了像素图形。
图元工具类的类层次图如下:
CDrawTool是基类。
CBlockTool是实体块处理工具。
CCopyTool是拷贝处理工具。
CEllipseTool是和CDrawEllipse对应的处理工具。
CImageTool是图形处理工具。
CPolyTool是和CDrawPoly对应的处理工具。
CTextTool是文本处理工具。