- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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_
您可能关注的文档
- 合肥工业大学工程测量期末考试总结.docx
- 吉林中考电学简答专项练习及答案--物理.doc
- 吉林大学岩土工程数值法作业必威体育精装版版10级.doc
- 各种野菜的功效和吃法.docx
- 吉林省榆树市2013年高考物理压轴卷七.doc
- 同仁医院策划.doc
- 同家梁矿概况.doc
- 同济大学土木工程概论复习资料【工程管理版】.docx
- 同济大学第八章(焊缝螺栓连接)--钢结构习题参考解答.doc
- 同等学力申硕国际经济学考试大纲.doc
- 《交通运输与气象》课件.ppt
- 6《我们神圣的国土 好山好水好风光》(说课稿)-2024-2025学年道德与法治五年级上册统编版.docx
- 第12课从明朝建立到清军入关课件高一上学期必修中外历史纲要上(5).pptx
- 6《人大代表为人民》(第1课时)(说课稿)2024-2025学年统编版道德与法治六年级上册.docx
- 第1章开启化学之门复习九年级化学上册课件.pptx
- 6《哈姆莱特(节选)》 说课稿 2024-2025学年统编版高中语文必修下册.docx
- 2024-2030年智能疏导系统公司技术改造及扩产项目可行性研究报告.docx
- 室内空气质量及污染课件.ppt
- 2024-2030年智能硬件搬迁改造项目可行性研究报告.docx
- 敬老重阳节教案(通用5篇).docx
文档评论(0)