网站大量收购闲置独家精品文档,联系QQ:2885784924

图形编辑“点-线”联动.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形编辑“点-线”联动

Visual C++图形编辑“点-线”联动?摘 要 以统筹图绘制程序的编制为例,详细给出了应用Visual C++开发工具及MFC实现图形编辑中的节点-箭线联动方法。该方法对于实现GIS应用、标图应用和统筹图应用中的类似功能有较好的参考价值。关键词 节点;箭线;编辑联动1 引言很多的图形应用如统筹图应用、GIS应用、标图应用中都存在着编辑联动的问题。所谓编辑联动,是指在对一个图元编辑修改包括位置的变动后,其他图元由于与这个图元有某种关系,而能自动同步被修改。按图元类型,可将图形联动划分为点-点、点-线、点-面、线-线、线-面、面-面等6种。文中以统筹图为例,讨论节点-箭线联动编辑问题。节点与箭线图元的实现以VC自带面向对象图形例程DRAWCLI基础,添加自定义类CDrawNode和CDrawArrow来实现。依据功能设计,程序的主要工作包括:(1) 基本图元的绘制。包括绘制节点和箭线。绘制的节点图形表示为圆心标有编号圆圈;箭线的两侧标注有文字说明,且文字行与箭线保持平行,箭线带有起节点和终节点。(2) 处理图元及相互位置关系。包括删除操作和移动操作。删除某一节点,与该节点相连的箭线全部删除,且调整编号在其后面的节点编号,删除箭线不影响节点。移动节点时,与之相连的箭线相应移动,其关键是准确计算箭线的位置。2 基本图元及联动2.1基本图元实现设在VC++6.0的环境下已建立了工程Draw.dsp。节点类和箭线类都是以CDrawObj为基类派生。在建立这两个类之前,需要添加以下全局变量enum DrawShape{…,circle,arrow,…};//图元类型以及相应的工具circleTool和arrowTool(arrow)、arrowlineTool2.1.1节点类CDrawNode的设计class CDrawNode : public CDrawObj{public:CDrawNode(const CRect position,int Radius);void SetCircleIndex(int Index){ m_nIndex=Index}; 设置节点编号virtual int GetObjIndex(){return m_nIndex} ; //获取编号public:int m_Radius; //节点半径int m_CentreX,m_CentreY;//圆心//在圆中心写上编号,要考虑编号的位数情况 virtual void Draw(CDC* pDC,CDrawView* pView); ?protected:int m_nIndex;//编号CDrawNode* m_pDrawObj;friend class CCircleTool;};绘制节点的工具CCircleTool在鼠标左键按下OnLButtonDown的消息处理函数中,实际分配内存,产生一个节点对象。2.1.2箭线类CDrawArrow的设计class CDrawArrow: public CDrawObj{public: CDrawRect(const CRect position);void SetProjectName(CString name){m_ProjectName=name;};void SetProjectTime(int time) {m_ProjectTime=time;};CString GetProjectName() {return m_ProjectName;}void SetProjectTime(int time){ return m_ProjectTime;}bool m_bForeConnect;//箭线始节点标志bool m_bBackConnect;//箭线终节点标志int m_ForeConnect; //箭线连接的始节点序号int m_BackConnect; //箭线连接的终节点序号virtual int GetObjIndex() {return o};//绘制时,计算平行于箭线的说明文字的角度,位置,项目名称总在线的上方virtual void Draw(CDC* pDC,CDrawView* pView);enum ArrowType{ none, pureArrow, openArrow,stealthArrow, diamondArrow, ovalArrow};enum Shape { rectangle, roundRectangle, ellipse, line,arrow };protected:CString m_ProjectName; //项目名称int m_ProjectTime; //时间Shape m_nShape;ArrowType m_

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档