对矢量图形的组合拆分算法及编程实现

对矢量图形的组合拆分算法及编程实现

ID:1149856

大小:162.17 KB

页数:7页

时间:2017-11-08

对矢量图形的组合拆分算法及编程实现_第1页
对矢量图形的组合拆分算法及编程实现_第2页
对矢量图形的组合拆分算法及编程实现_第3页
对矢量图形的组合拆分算法及编程实现_第4页
对矢量图形的组合拆分算法及编程实现_第5页
资源描述:

《对矢量图形的组合拆分算法及编程实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、维普资讯http://www.cqvip.com第17卷第1期Jo北uma京lo/机Bei械jing工Ins业titut学eo院tMa学chi报nexy.17No12002年3月M且r.2002文章编号:1008—1658(2002)01—0006一O6对矢量图形的组合拆分算法及编程实现翟文国,佟俐鹃(北京机械工业学院计算机及自动化系.北京100085)摘要:组合拆分是编辑矢量图形不可缺少的操作,如何保证图元的显示顺序不被打乱.以及保证整幅图开j的显示效果是一个很关键的问题。利用面向对象的方法通过设计适当的类,将图形元

2、素对象化,并且设计了组合图元类CComboDraw,较好地实现了对图元对象的组合拆分操作。论述了在VC¨6.0环境下利用MFC类库对图元进行组合及拆分操作的算法和编程实现。另外,图开;元素经组合或拆分操作后。图开;的显示顺序(即图元的图层)会发生改变,为此又给出了图形的显示算法和编程实现。关键词:矢量图形;圈元;圈层中图分类号:TP391文献标识码:A为了便于叙述。先作如下定义。普通图元:矩形、圆、圆弧、位图图片等图形的基本元素。组合图元:多个普通图元按照一定的层次结构组合而成的图元的集合体。组合拆分是在编辑矢量图形过

3、程中不可缺少的操作(如CorelDRAW中的group[¨或com—bine命令),而有些矢量图形编辑软件在执行了多个组合拆分操作后,图元的显示(即图层)顺序容易打乱(在CorelDRAW中执行group命令后的原来不相邻的图形元素都处在了相邻图层上,图层顺序发生了改变),而这种显示顺序的打乱会严重影响整幅图形原来的显示效果,我们在设计开发矢量图形编辑工具的过程中避免了这种情况的发生(除非执行了改变图层的命令,否则图形元素的原始显示顺序不会发生改变),即组成组合图形的图形图层可不相邻。本文利用OOP技术【2】,对图元进

4、行对象化,将整幅矢量图形看成是一棵图元树.叶子即为图元对象,非叶子节点为组合图元对象。每个组台图元对象可看成一棵子树(如图1,2所示),以下便是实现这种功能的算法和编程实现。三妊组夸二蛆姐鲁一蛆纽夸一④(@圈l图形的组合结构圈2图元的实际显示顺序收祷日期:2001一l0—24基叠项目:雷束九五重点科技攻关项目[项目编号{卵一956—03—02—02】作者商升:翟文国(1974一).男,山东日照^.北京机械工业学院计算机及自动化系研士研究生.主要从事圈形图像处理的研究。维普资讯http://www.cqvip.com第1

5、期翟文国等:对矢量图形的组舍拆分算法及编程实现71组合算法及编程实现算法描述:创建组合图元对象,将选中的图元创建姐旮图元对象添加到组合图元对象中;将文档中与选中图元队列连中羽无潘加到组合囤元对采中图层号(图层号可看成图元的唯一标识)对应的图元去掉;最后将组合图元对象添加到文档中。算从选中图元辟皋队rj中取出一十图法流程如图3所示。元.}此图元圈层号咄干se[ndexvoMCMetaView::ComboOp()//组合操作从文档中去掉图层哥Drlndex与Selndex相等的圈元intnSeSize=mSetectAr

6、ray.GetSize();//得到选中图元对象队列的大小到连进中圈元队列尾邢'if(!nSeSize)return;N、\/—//如果选中图元队列中为空,不执行组合操作.Y●CMetaDocpDocGetDocument():l暴如蛆台固元到置丰彗更新选中罔元队于_】//得到当前视图的文档指针ASSERTVALID(pDoe);蛄盘CComboDrawpnraw=newCComboDraw();//创建组合图元对象(Se[ndex:选中圈元队列中圈元的层号.pDraw一>Append(m_SelectArray);D

7、r[ndex:文档圈元队列中圈元的圈层号)圈3组合算法流程//将选中图元对象添加到组合图元对象中pDraw一>bSelected=TRUE;//x~组合图元对象设置选中标志pDoc一>mDrawArray.Add(pDraw);_/*将组合图元对象添加到文档中的图元队列的最后,以备显示*/intnDrSizepDoc一>mDrawArray.GetSize();_//得到在文档中存放的图元队列大小it(nDrSize)/~t-在图元队列中将在组合图元对象中已经存在的图元去掉*/intSelndex;intDrlndex

8、;CDrawpSe;CDrawpDr;f0r(int__0;im—NumLayer;//得到图元的屡数for(intj=0ijm_DrawArray.GetAt(j);DrIndex

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。