论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > VC >

A450基本GIS系统的开发

2 鼠标交互绘图

2.1 用鼠标绘图要解决的主要问题 paper51.com

2.1.1 捕获鼠标操作消息 copyright paper51.com

VC++提供了足够的窗口消息和已经保护的消息处理函数解决这个问题.在应用程序Draw 中实现鼠标交互绘制图形元素时,将主要用到以下三个鼠标操作: 内容来自www.paper51.com

鼠标移动: OnMouseMove(UINTnFlags ,CPoint point)  WM_MOUSEMOVE 内容来自www.paper51.com

按下左键:OnLButtonDown(UINT nFlags.CPoint point)   WM_LBUTTOND copyright paper51.com

按下右键:OnRButtonDown(UINT nFlags.CPoint point)   WM_RBUTTONDOWN http://www.paper51.com

2.1.2 捕捉所有的鼠标输入

http://www.paper51.com

在用鼠标交互绘制一个图形元素时,在已经开始绘图的情况下,不希望还能进行别的操作,以避免造成系统流程和变量初始化等方面的错误.VC++提供了两个成员函数来满足以上的功能需求:

内容来自论文无忧网 www.paper51.com

CWnd::SetCapture(); paper51.com

CWnd::ReleaseCapture();

copyright paper51.com

2.1.3 在屏幕上拖动图形 copyright paper51.com

在用鼠标交互绘制图形元素时,为了直观的看到所绘制的图形,一般采用拖动图形的方法. 内容来自www.paper51.com

2.1.4 保存图形数据到文档

paper51.com

用鼠标在屏幕上交互绘制的图形元素,要创建一个图形元素对象并将指向这个图形元素对象的指针保存起来.

paper51.com

2.1.5 将图形以实际的形态重画

内容来自www.paper51.com

用鼠标交互绘制一个图形元素后,要在屏幕上马上显示出这个图形元素的实际形态,必须将图形元素以实际的形态重画.因为在VC++的R2_NOT绘制模式下,线条不是彩色的,拖动的图形都不是用图形元素的实际颜色.必须对图形元素以实际形态进行重画.在矢量图形系统设计中,一般采用CClientDC 对象,在交互绘制图形元素操作完成后,即时在视图中重画这个新增的图形元素. paper51.com

2.2 交互绘制各类图形元素 内容来自www.paper51.com

本设计主要实现交互绘制直线、圆、填充圆、圆弧、标注文本、连续直线、多边形区域、网络点的实现过程.

内容来自论文无忧网 www.paper51.com

2.2.1 加入绘图菜单 内容来自论文无忧网 www.paper51.com

⑴    增加菜单资源.

http://www.paper51.com

在应用程序Draw 的菜单资源中,增加一个菜单”鼠标绘图”.在这个菜单中包含直线圆填充圆圆弧标注文本连续直线多边形区域网络点网络连接等九个菜单项. 内容来自论文无忧网 www.paper51.com

paper51.com

①增加菜单的消息处理函数

copyright paper51.com

afx_msg void OnSize(UINTnType, int cx,int cy); paper51.com

afx_msg voidOnMouseMove(UINT nFlags, CPoint point);

paper51.com

afx_msg voidOnLButtonDown(UINT nFlags, CPoint point);

http://www.paper51.com

afx_msg voidOnRButtonDown(UINT nFlags, CPoint point);

内容来自www.paper51.com

afx_msg void OnDrawArc();

内容来自论文无忧网 www.paper51.com

afx_msg void OnDrawCircle(); 内容来自论文无忧网 www.paper51.com

afx_msg voidOnDrawCircle1();

内容来自www.paper51.com

afx_msg void OnDrawLine(); http://www.paper51.com

afx_msg void OnDrawPline(); 内容来自论文无忧网 www.paper51.com

afx_msg voidOnDrawPlineRgn();

copyright paper51.com

afx_msg void OnDrawText();

paper51.com

afx_msg void OnDrawNet(); 内容来自论文无忧网 www.paper51.com

afx_msg voidOnDrawNetLink(); http://www.paper51.com

②在实现文件drawview.cpp中,增加了函数的消息映射机制:

paper51.com

ON_COMMAND(ID_DRAW_ARC,OnDrawArc)

内容来自www.paper51.com

ON_COMMAND(ID_DRAW_CIRCLE,OnDrawCircle) 内容来自www.paper51.com

ON_COMMAND(ID_DRAW_CIRCLE1,OnDrawCircle1) http://www.paper51.com

ON_COMMAND(ID_DRAW_LINE,OnDrawLine) 内容来自论文无忧网 www.paper51.com

ON_COMMAND(ID_DRAW_PLINE,OnDrawPline) paper51.com

ON_COMMAND(ID_DRAW_RGN,OnDrawPlineRgn)

paper51.com

ON_COMMAND(ID_DRAW_TEXT,OnDrawText) 内容来自论文无忧网 www.paper51.com

ON_COMMAND(ID_DRAW_NET,OnDrawNet)

paper51.com

ON_COMMAND(ID_DRAW_NET_LINK,OnDrawNetLink) copyright paper51.com

③在实现文件drawview.cpp中,增加了消息处理函数的实现代码.

paper51.com

------分隔线----------------------------
联系方式