前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.Net 基于GDI+的图件绘制平台的设计与实现(一)

.Net 基于GDI+的图件绘制平台的设计与实现(一)

作者头像
程序你好
发布2018-07-20 14:18:23
1K0
发布2018-07-20 14:18:23
举报
文章被收录于专栏:程序你好程序你好

前言

最近参与开发的石油行业生产运行管理系统中(Java Web SSM系统),需要开发一整套石油行业专业图形软件,其中有格式复制的综合录井图,也有及时性要求较高的工程施工参数实时曲线监控,仪表盘,还有钻井行业常用的井深结构图,钻具组合图、井口装置图等。经过研究和了解市场上的相关软件,决定采用基于微软Windows .Net平台技术实现。.Net平台图形方面的开发现在可以使用两种技术分别实现,WPF图形绘制和传统WinForm GDI+绘图技术。这两种技术实现起来差别很大,由于目前团队中开发人员对WPF技术了解不够深入,学 习成本的考虑决定项目中采用传统GDI+方式绘制图形。参考和研究了网上流行的开源绘图库和INT这类商业绘图库,大部分都是实现的饼状图,曲线图,折线图,柱状图等传统的图形,而且可扩展性不强,不能支持石油行业专业的图it件系统。决定开发一套专业的可扩展的图形绘制图库,方便在石油行业的项目中使用,前期先实现使用GDI绘图,后期考虑通过扩展接口的方式支持OpenGL(全写Open Graphics Library)跨编程语言、跨平台的编程接口规格的专业的图形程序接口。

GDI+绘图库介绍

GDI是图形设备接口的英文缩写,英文详细写法:Graphics Device Interface,,图形设备接口的意思。主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。GDI的出现使程序员无需要关心硬件设备及设备正常驱动,就可以将应用程序的输出转化为硬件设备上的输出和构成,实现了程序开发者与硬件设备的隔离,大大方便了开发工作,这组api接口使得我们的电脑能够输出显示各种图形图像,展示丰富多彩的效果。GDI+平台提供了直线、矩形、折线、多边形、椭圆、圆形、曲线、文本、图片等几何形状基元的画法,整个图形画面由若干几何形状基元组合而成。GDI+中使用路径来表示二维图形,路径可由任意数据的几何形状基元组成,使用全局坐标。一个图形画面可表示为路径的几何。

在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。而.net framework对GDI+ 的这组api接口进行了非常好的封装,使得我们能够在不需要了解底层接口情况下进行图形系统开发。

一张图来更深入了解下GDI+

在我们图形系统应用程序中,调用.net的绘制组件绘制图形图像时,会执行类似上图中展示的调用过程。

绘图平台绘图库架构

一、图元

图形文件最小的组成和编辑单位,包括对GDI+平台直接提供的直线、矩形、折线、多边形、椭圆、文本、图像等基本几何形状装饰而来的基本图元,以及由各个基本图元组合而成的组合图元。

图元的职责调用绘图接口进行图形绘制,现在支持使用GDI+绘图,后面可增加对OpenGL绘图支持。

图元中还有如画笔,画刷,高度,宽度等各种绘图属性设置,还提供图形缩放、图形移动等方法,还提供HitTest方法,让用户在图元对象内部HitTest。

二、图元Painter对象

每种图元都提供一个对应的Painter对象,用来对图元对象的生命周期进行管理,还可以控制图元绘制顺序,可对图元进行组合,以形成复杂树状关系的图元组合库。还可以提供对图元上UI事件控制与响应。

主要包括下面几个内容:

  • 图元shape创建与管理
  • 子图元的Painter集合
  • 图元绘制的属性相关设置
  • 图元右键上下文菜单事件处理,及弹出窗口UI设置
  • 图元创建中的事件处理

三、布局管理对象

提供图元绘制布局管理,提供几种不同类型的布局方式。

Box布局

Stack布局

Flow布局

锚定布局

浮动布局

四、曲线绘制对象

绘制点状,折线图,阶梯图,曲线折峰,曲线移峰,曲线镜像,曲线左填充,曲线右填充,曲线内部填充等功能。

曲线X坐标计算接口,同时支持对数图道坐标计算和非对数图道坐标计算实现。

五、图道坐标尺实体对象

基类对象,时间坐标尺,深度坐标尺

六、岩性绘制属性对象

七、绘图面板对象

八、区域Host对象

一组代表容器的图元

九、其它对象

结束,绘图库的i基本结构就介绍完了 ,后续会继续讲如何使用绘图库绘制图形,包括绘图库UI项目(绘图库使用相关属性窗体),绘图库Utility项目 ,

相关的Data、Model、View、Service等项目结构和代码 。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • GDI+绘图库介绍
  • 绘图平台绘图库架构
    • 一、图元
      • 三、布局管理对象
        • 四、曲线绘制对象
          • 五、图道坐标尺实体对象
            • 六、岩性绘制属性对象
              • 七、绘图面板对象
              • 九、其它对象
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档