1 / 18

小型矢量图形程序设计( c#.NET )

小型矢量图形程序设计( c#.NET ). 学习本部分内容的目的和方法 系统目标 系统整体功能设计 C#.Net 的基本绘图( GDI+ ). 学习本部分目的和方法. 理解 GIS 基本原理和方法 掌握基本矢量图形程序的设计和实现方法 理解 GIS 和矢量图形程序之间的关系 掌握 GIS 基本的图形处理、图层控制方法 掌握 GIS 基本图形图元的绘制理论和方法 理解计算机制图的基本过程和注意要点 查阅资料、大量练习、完成上机要求任务以及课下对功能做必要的扩充。. 系统目标. 实现 GIS 的基本操作诸如:放大、缩小、漫游、选择等;

zalika
Télécharger la présentation

小型矢量图形程序设计( c#.NET )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 小型矢量图形程序设计(c#.NET) • 学习本部分内容的目的和方法 • 系统目标 • 系统整体功能设计 • C#.Net的基本绘图(GDI+)

  2. 学习本部分目的和方法 • 理解GIS基本原理和方法 • 掌握基本矢量图形程序的设计和实现方法 • 理解GIS和矢量图形程序之间的关系 • 掌握GIS基本的图形处理、图层控制方法 • 掌握GIS基本图形图元的绘制理论和方法 • 理解计算机制图的基本过程和注意要点 • 查阅资料、大量练习、完成上机要求任务以及课下对功能做必要的扩充。

  3. 系统目标 • 实现GIS的基本操作诸如:放大、缩小、漫游、选择等; • 实现GIS基本图元点、线、面的绘制和保存; • 实现GIS基本图元的选取、编辑等操作; • 了解GIS属性数据和图元数据的绑定和链接 • 掌握C#.NET程序设计的方法,尤其是独立解决问题的能力; • 如可能可实现某一具体的GIS功能如生成等高线、空间差值等,也可以读取某种格式的GIS现有文件;

  4. 系统整体功能设计 • 系统数据的保存和读取(即…) • 系统的基本操作,以及交互操作方式的控制(放大、缩小、漫游…); • 系统的图形图元绘制功能(点、线、面…) • 图形图元的选取(选取方式…) • 系统图层的控制和组织; • 系统基本参数的设置;

  5. C#的基本绘图 • 传统的windows绘图(GDI)Windows GDI(Graphics Device Interface,图形装置界面) • .NET下的绘图(GDI+)随着开发技术的进步,GDI从某种意义上已经不能满足需求,于是微软把GDI进一步封装抽象,形成新的GDI+,并在性能和功能上进一步完善。 • 二者区别与GDI相比,GDI+提供了一些新特性:Alpha混合技术、反锯齿处理技术、渐变色和纹理填充、宽线条、基本几何曲线样式、可缩放区域、浮点数坐 标、嵌入画笔、高质量过滤和缩放、多种线条样式和端点选项等。 http://cfg1014.blog.163.com/blog/static/66343992009824102219103/

  6. C#的基本绘图 • GDI+的坐标系统和笛卡尔坐标系 • GDI+的颜色RGBA/HSB/CMYK(最佳打印模式) • 像素、位图(BMP/GIF/TIF/JPEG/PNG/EXIF)

  7. .NET对绘图的支持 • using System.Drawing • 常用绘图对象颜色Color:Color结构表示一种ARGB颜色Point和PointF:两种点结构; Pen:Pen对象通常称为画笔,用于绘制样式丰富的直线或曲线;Brush:Brush通常被称为,用于定义填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部对象;字体和Image;

  8. .NET对绘图的支持 • 基本绘图 在.NET中图形包括以下两个步骤。 第一,创建Graphics对象。 第二,使用Graphics对象绘制线条和形状,呈现文本或显示操作图像。 • Graphics对象

  9. GIS坐标和屏幕坐标 • 两种坐标系的转换两个方法:屏幕坐标到实际坐标Screen2World();实际坐标到屏幕坐标World2Screen(); • 坐标转换公式

  10. GIS坐标和屏幕坐标 • C#实现 //世界坐标转换到屏幕坐标 public void World2Screen(double x1, double y1, out int x2, out int y2) { x2 = Convert.ToInt32((x1 - dGeoMinX) * sScale) + iScreenLeft; y2 = Convert.ToInt32((dGeoMaxY - y1) * sScale) + iScreenTop; } //屏幕坐标转换到世界坐标 public void Screen2World(int x1, int y1, out double x2, out double y2) { x2 = (x1-iScreenLeft)/sScale + dGeoMinX; y2 = dGeoMaxY - (y1-iScreenTop)/sScale; }

  11. 程序的结构 • 传统程序 • Windos程序 • 单文档结构程序 • 多文档结构程序 • 基于对话框的窗体程序 • 视图文档结构程序

  12. 小型矢量图形系统结构 • GIS特点 • 系统的几个基本类视图(管理图层等)文档(系统文件存取)视图驱动(坐标转换等)图层类(图层组织)图元类(点线面等)

  13. 视图驱动类设计 • 视图驱动类功能坐标转换、放大、缩小、漫游等 • 视图驱动类方法初始化视图坐标范围(InitCoord)放大、缩小、漫游(ZoomIn、ZoomOut、Pan…)地图比例尺(MapScale)坐标转换(World2Screen/Screen2World)设置地图显示范围(SetMapExtend)

  14. 视图工具类设计 • 视图工具类主要功能完成各种视图交互操作 • 视图工具类的分类窗口工具类(缩小等)、绘图工具类、视图工具命令类 • 视图工具类的主要方法MouseDown/MouseMove/MouseUp/DBClick/Draw

  15. 基本图元类的设计 • 基本图元类的功能完成点、线、面基本图元对象的创建和优化 • 主要方法Draw/Move/GetRect • 点类Draw/Move/GetRect/SetCoord/GetCoord • 线类Draw/Move/GetRect/SetCoords/GetCoords • 面类Draw/Move/GetRect/SetCoords/GetCoords

  16. 视图驱动类、视图类、基本图元类的使用 • 界面交互部分的控制程序启动顺序和事件响应顺序:类构造、窗体创建、窗体大小变化、窗体显示、窗体激活、窗体关闭、窗体销毁菜单响应/工具条/命令按钮绘图区域 Paint、Resize、Mouse • 状态控制枚举状态、状态标志检查、各项相关控制 • 代码实现部分在各自对应的实现部分输入相关控制代码

  17. 图层类的设计 • 图层类的功能管理图层图元、画图层、读取/保存图层文件 • 主要方法和属性名称、图层ID、是否可视、是否激活图层、图元列表、全图范围、画全图、添加/删除图元等 • 图层类的关联使用GeoDrive的关系??思考一下这样设计合理与否??

  18. 文档类的设计 • 文档类的主要功能管理工程图层、读取/保存文档文件等 • 文档类的主要属性和方法文档名称、图层个数、图层列表、添加/移除图层、获取当前激活图层、保存/读取文档文件功能等 • 文档类和图层类的关系 • 文档类和图层类和GeoDrive类的关系能否简化??

More Related