你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
Visual C++图形编辑“点-线”联动(一)
 

摘 要   以统筹图绘制程序的编制为例,详细给出了应用Visual C++开发工具及MFC实现图形编辑中的节点-箭线联动方法。该方法对于实现GIS应用、标图应用和统筹图应用中的类似功能有较好的参考价值。

关键词 节点;箭线;编辑联动

 

 

1 引言

很多的图形应用如统筹图应用、GIS应用、标图应用中都存在着编辑联动的问题。所谓编辑联动,是指在对一个图元编辑修改包括位置的变动后,其他图元由于与这个图元有某种关系,而能自动同步被修改。按图元类型,可将图形联动划分为点-点、点-线、点-面、线-线、线-面、面-面等6种。文中以统筹图为例,讨论节点-箭线联动编辑问题。

节点与箭线图元的实现以VC自带面向对象图形例程DRAWCLI基础,添加自定义类CDrawNodeCDrawArrow来实现。依据功能设计,程序的主要工作包括:

(1) 基本图元的绘制。包括绘制节点和箭线。绘制的节点图形表示为圆心标有编号圆圈;箭线的两侧标注有文字说明,且文字行与箭线保持平行,箭线带有起节点和终节点。

(2) 处理图元及相互位置关系。包括删除操作和移动操作。删除某一节点,与该节点相连的箭线全部删除,且调整编号在其后面的节点编号,删除箭线不影响节点。移动节点时,与之相连的箭线相应移动,其关键是准确计算箭线的位置。

2  基本图元及联动

21基本图元实现

设在VC++6.0的环境下已建立了工程Draw.dsp。节点类和箭线类都是以CDrawObj为基类派生。在建立这两个类之前,需要添加以下全局变量

enum DrawShape{…,circle,arrow,…};//图元类型以及相应的工具circleToolarrowTool(arrow)arrowlineTool

211节点类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_CentreXm_CentreY;//圆心

    //在圆中心写上编号,要考虑编号的位数情况

        virtual void Draw(CDC* pDC,CDrawView* pView);
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089