VC 小型矢量图形系统开发的实现

Visio风格源代码组件库,流程图,矢量图,图形编辑,打印,导入,导出,VC++源代码 Visio风格源代码组件库,流程图,矢量图,图形编辑,打印,导入,导出,VC++源代码 -- 100%源码全开放企业级Visio制图解决方案! Visio风格的流程图矢量图编辑功能从E-Form++发布第一个版本就已经具 阅读详情

大家学习了VC的MFC的一些基础知识后,如果能用VC开发一个比较实用的软件,对熟悉VC各方面编程和面向对象的软件设计和开发都是很有帮助的。

本文旨在通过对一个作者自己开发的小型矢量图形系统全面讲述而达到让读者了解一个小软件从设计到实现的阶段的解决的问题。同时也从界面和功能上对MFC和Windows系统功能的挖掘,同样,对于学习计算机图形学的读者,也可以看到本文有很多对图形学算法和实现的有益探讨。

一. 功能和界面设计

首先,让大家对一个本软件功能的大概了解。当你着手开发一个软件时,首先要解决的当然是本软件的功能(软件工程常称作用例,具体概念可以参考有关资料,不妨简单理解为用户使用它能完成哪些工作)。由于写这篇文章时,本软件已经具有比较完整的原型。

可以看到,本软件是实现了一个绘图功能的子集。最初就确定了开发环境为VC6.0,界面采用IE风格。在使用上为了给用户最大的便利,采用了三种工具条(普通文件、打印操作等标准工具,对图形对象属性设置的工具条式对话框,带文字说明的大按钮式可浮动或任意船坞- Dock定位的绘图工具条)。

操作上采用左键点击建立图形对象起始点,移动动态调整图形大小和位置(随手画采用按住左键拖动的方式,再次点击左键确定位置,右键取消操作,双击确定(结束)多步图形对象(如多边形)的绘制。在功能设计方面基本符合一般图形软件的惯例,但出于作者的便利和保护鼠标的考虑,整个功能体现了基本无需按住左键拖动的思想。这也是很容易让人接受的,因为即便习惯拖动的用户拖动时也会产生位置调整,只是释放后还是出于拖动状态,再次点击或双击才最终确定。

功能上选择了画线、框、圆、多边形、立体、文字、曲线、填充以及删除的功能,根据是否填充和光照又增加了几个类别,填充方式根据图形学的概念提供了两种方式(以后介绍)。根据对图形属性取了线宽、线型(很容易实现简单的线型,由于想加入更多的特性,作者先没有具体实现它,以后作者会提到它的实现,读者有兴趣可以试着实现)、边框色、填充色和字体几个属性。当然,这些功能在面向对象的方法中都是可以很方便扩展的(如画椭圆,选取对象,对象的位移和旋转操作,根据填充算法实现同色选取,即Photoshop等软件的魔棒功能等),对于橡皮擦功能可以很简单的实现特定工具或告诉用户如何实现此功能(即用背景色利用已有功能绘图)。

内部实现上,要求单独记录各图形的关键属性(如位置、色彩等,这些是矢量图区别于位图的特点)。由于各对象可以形成对象链表,因此,也要求实现多步撤消(Undo)和重做(Redo)的功能,这往往是用户所十分期待的功能(Window自带的画笔附件程序在这点上就很欠缺)。

二. 对象设计

面向对象的程序设计方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。

首先介绍一下对象(Object)和类(Class)的区别,类是同类对象数据和功能的描述和实现(C++中用Class关键字定义的是类),对象是类的在内存中的具体形态(用类名声明或用new操作生成的是对象变量),一般称对象为类的实例(Instance)。

对于图形对象的对象设计由于它们的较强的相关性,往往在很多面向对象编程书都提到过,故相信读者识别对象和类不会很困难。但是,要充分利用继承和多态的特性来描述对象和类之间的关系,以及通过描述每个类的功能定义还是要具体问题具体分析的。

VC实现小型矢量图形系统开发 导读:   大家学习了VC的MFC的一些基础知识后,如果能用VC开发一个比较实用的软件,对熟悉VC各方面编程和面向对象的软件设计和开发都是很有帮助的。   本文旨在通过对一个作者自己开发小型矢量图形系统全面讲述而达到让读者了解一个小软件从设计到实现的阶段的解决的问题。同时也从界面和功能上对MFC和Windows系统功能的挖掘,同样,对于学习计算机图形学的读者,也可以看到本文有很多对图形 阅读详情

相关推荐

VC环境下的OpenGL三维图形编程实战

OpenGL(Open Graphics Library)是一个跨语言、跨平台的应用程序编程接口(API),用于渲染2D和3D矢量图形。自1992年由Silicon Graphics公司推出以来,OpenGL已成为图形领域内应用最为广泛的标准之一。它提供了一系列与硬件无关的命令,使得开发者能够创建复杂的视觉效果,而不必关心底层图形硬件的具体实现。首先,需要使用WNDCLASS结构体来定义一个窗口类,其中包含窗口的风格、窗口过程函数、图标、鼠标指针等属性。if (!

weixin_32687875的博客 1278

矢量图形开发与编程(基于MFC)

这是一本开发矢量图的绝好书籍,几乎包括了矢量图的各种图形

VC++ OpenGL应用程序开发实践指南

OpenGL(Open Graphics Library)是一个跨语言、跨平台的应用程序编程接口(API),由近350个不同的函数调用组成,用于渲染2D和3D矢量图形。自1992年由Silicon Graphics公司推出以来,OpenGL迅速成为图形处理领域事实上的标准。它支持各种图形硬件和操作系统,提供了一种高效、稳定且跨平台的图形解决方案。OpenGL最显著的特点是它的开放性和可移植性。开发者可以利用OpenGL编写出能在多种系统上运行的图形应用程序,这对于跨平台软件开发尤为重要。

weixin_34456923的博客 1056

VC++6.0中实现矢量图电子地图

" 本程序旨在与大家探讨如何在\n\ VisualC++下实现:\n\ 1.无闪烁地图、图形、位图的绘制,\n\ 2.鼠标抓拖地图背景的程序实现原理,\n\ 3.地图分层的实现,\n\ 4.视图打印的实现,\n\ 5.几个好用的MFC类的使用方法,\n\ 等一些本人工作中总结的一点经验,\n\ 希望能与大家共享其中的乐趣,同\n\ 时也欢迎大家提出宝贵的批评意见。\n\ 如想与我联系,告诉你我的E-mail: \n\ spp_sohu@sohu.com\n\n\ 注:本程序所用地图数据只是为了\n\ 就说明程序实现方法而取的逻辑坐标\n\ 点,并非通过实际测量所得数据,也\n\ 没有任何地理意义,读者如果需要绘\n\ 出实际有用的地图,则需要通过专用\n\ 设备获取准确测量的数据并经过相应\n\ 的坐标转换处理(这是一个较复杂的\n\ 过程),然后使用转换后的数据进行\n\ 程序作图。如果您执意要使用作者程\n\ 序中使用的地图文件作图,由此引起\n\ 的一切不良后果本人概不负责");

关于矢量图

[color=indigo][size=x-large]矢量图 计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般...

技术交流 889

探索MFCPlot:一款强大的数据可视化工具

探索MFCPlot:一款强大的数据可视化工具 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个开源的数据可视化库,专为Microsoft MFC (Microsoft Foundation Classes) 框架设计。该项目旨在提供简单、高效的方式来展示2D和3D图形,尤其适合需要在Windows环境中进行复杂数据可视化的开发者。 技术分析 MFCPlot的核心是...

gitblog_00002的博客 652

android 矢量图 数组,用VC实现小型矢量图形系统开发

class CDrawGraphView : public CView{protected: // create from serialization onlyCDrawGraphView();DECLARE_DYNCREATE(CDrawGraphView)// Attributespublic:CDrawGraphDoc* GetDocument();// Operationspublic:/...

weixin_39897505的博客 117

图像处理

图像处理 分类: VC++ C++语言 C语言 2013-10-18 10:27 28人阅读 评论(0) 收藏 举报 利用VC实现图像的特殊显示效果 经常看电视的朋友们不知注意到没有,最近的电视连续剧在每集片头或片尾部分都有显示一些特殊效果的图像,比如前一阵子中央一套放的《长征》、目前中央八套正在播放的《康熙王朝》,这些特效称为"图像的浮雕效果"和"图像的雕刻效

worldy的专栏 3907

图像处理(一)

图像处理(一) 利用VC实现图像的特殊显示效果 经常看电视的朋友们不知注意到没有,最近的电视连续剧在每集片头或片尾部分都有显示一些特殊效果的图像,比如前一阵子中央一套放的《长征》、目前中央八套正在播放的《康熙王朝》,这些特效称为"图像的浮雕效果"和"图像的雕刻效果",经过这些特效处理后的图像增强了观众们的视觉效果,它们看上去仿佛是使用3D技术作的,这也是为什么这种技术那么流行的原因

uag 的博客 3561

矢量图形系统开发与编程》配套源码.rar

此处仅用于参考,若有侵权请及时留言。 图形系统 该目录中包含的是矢量图形系统的DEMO。这个矢量图形系统是在书中介绍的图形系统Draw的基础上扩展功能开发完成的。主要扩展了图形块的制作功能,在矢量图形系统中绘制图例(插入图形块)的功能,图形选中功能,线型及颜色的设置功能,图层的设置管理功能,图形数据接口等。具体内容和使用方法可参考“图形系统”目录下的Word97文件“系统使用说明.doc”。 GIS系统 该目录下包含的是基本GIS系统的DEMO。该系统在本书介绍的系统基础上,扩展了矢量图形功能,并扩展了数据库的编辑、查询、排序功能,以及图形元素和数据库的记录间的连接功能,信息查询和修改功能,电子表格制作功能,演示表格制作功能。具体内容和使用方法可参考“GIS系统”目录下的Word97文件“系统使用说明.doc”。

用C++ MFC实现矢量图形漫游系统

毕业设计 用C++开发矢量图形漫游系统,整个系统实现图形的放大缩小鹰眼查看漫游等功能。

矢量图形系统开发与编程(完整版)陈建春

矢量图形系统开发与编程(完整版)陈建春,基于VC++,MFC,包括封面501页,网上能找到的比较清晰的版本

VC++底层开发矢量图形系统实验详细步骤

很详细的说明文档,底层开发永远都是王道,可以好好学习下,琢磨透以后,可以继续根据实际应用开发。N人可以做到的,小白菜也可以做到~!

一个画矢量图的程序例子(原代码)

画矢量图的例子,改函数是Led显示屏通讯程序中做图部分分离出来的。 希望哪位朋友有兴趣,把表格部分也继续写完。

我们为什么要选择 Silverlight[转]

Silverlight 为 Web 提供媒体体验和 Rich Internet Application,从而可以集成视频、动画、交互和美妙绝伦的用户界面。   用户可以无缝地快速安装,这是由于 Silverlight 是一个按需使用、易于安装、大小不足 2 MB 并且能够与所有的主流浏览器一起使用的小型插件。   在基于 Windows 的计算机和基于 Macintosh 的计算机上提供一致的...

weixin_30263277的博客 73

模板即系统:文档自动化的核心原理与工程实践

文档自动化并非简单排版提速,而是将内容、结构与视觉规则封装为可复用的生产协议。其底层依赖模板驱动的确定性渲染引擎,通过语义识别、结构化转换与规则化布局,实现非专业用户批量生成专业PDF的目标。相比AI生成工具的不可预测性,这类系统以稳定性、一致性与跨设备协同见长,广泛应用于销售资料、培训课件、知识付费等需高频交付标准化数字文档的场景。Sqribble 作为典型代表,凸显了‘模板即操作系统’这一现代内容工作流范式。

weixin_33928137的博客 430

常用科研论文作图软件

图形输出格式多样,例如JPEG,GIF,EPS,TIFF等。工科同学们接触的第一门语言通常是VC或者VB,还有的会是Forturn或者Delphi,这都是非常棒的语言,功能十分强大,然而Python的特点是上手快,程序开发周期非常短,我想这在非计算机专业的工程类学科中而言,似乎更加重要。如果你说你没用过甚至没听过他们这“两兄弟”,我想你肯定不是个好的理工生,其功能的强大在于编程代码简单,默认出图漂亮,自定义性好,支持常见各种类型的画图,能导出丰富的格式,动态交互很强大,方便简单上手。

Ty134688的博客 1718
上一篇: SQL UNIQUE 约束
下一篇: Xcode使用教程详细讲解(下)
long0801
博客等级 码龄9年 17粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值