C# 电子白板软件开发

给大家介绍两个 C# 电子白板软件开源项目,其中一个是基于 WinForm 平台开发的,另一个是基于 WPF 平台开发的。这两个项目实现的功能类似,最初都是由 Alex Farber 发布在 CodeProject 开源平台之上的,其中 WinForm 版本发布于 2005 年,WPF 版本发布于 2008 年。遗憾的是这两个原始项目都已经从 CodeProject 移除了,好在 Mark Miller 扩展后的 WinForm 版本还能找到,但是 WPF 版本是彻底没了。幸好我之前下载并保存了 WPF 版本,今天一并分享出来,与 C# 初学者一同交流学习。

两个项目都实现了 书写基本图形绘制属性编辑撤销重做文件保存 等基础功能。其中, 经过 Mark Miller 优化后的 WinForm 版本还实现了图形旋转画布旋转与漫游图层(多页) 等功能。项目中采用了面向对象的开发思维,也有一些实际项目经验的体现,值得初学者深入学习。

WinForm.DrawTools

使用 GDI+ 实现的图形的呈现,核心组件是 DrawArea 用户控件(UserControl),在该控件的 Paint 事件中进行的图形的绘制。DrawObject 是所有图形的基类,其中的 Draw(Graphics g) 虚方法由子类重写,以决定呈现的内容。

基本功能

  1. 文档操作:

    • 新建
    • 保存(另存为)
    • 打开
    • 导出为图片
    • 最近文档记录
  2. 图形绘制:
    • 画笔书写
    • 矩形
    • 椭圆
    • 直线
    • 连接线
    • 多边形
    • 图片
    • 文本
  3. 图形编辑:
    • 线条粗细
    • 画笔颜色
    • 旋转
  4. 基本操作:
    • 全选
    • 取消全选
    • 删除选中的图形
    • 删除所有的图形
    • 撤销
    • 重做
  5. 页面(层)操作:
    • 旋转
    • 缩放
    • 漫游
    • 添加
    • 删除
    • 切换

主要代码模块

  • DocToolkit:文档相关功能

    • DocManager:文档的保存与打开
    • DragDropManager:文档拖拽打开
    • MruManager:记录最近编辑的文档
    • PersistWindowState:记录窗体状态
  • DrawTools
    • DrawArea:画板,接受鼠标输入,呈现形状
    • DrawObject:形状的基类
    • GraphicsList:单页形状的呈现与管理
    • Layers:页面管理
    • Command:全选、删除等命令

WPF.DrawTools

基于 DrawingVisual 实现的图形的呈现,核心组件是继承自 CanvasDrawingCanvas 自定义控件,该控件用于承载所有的图形以及接收用户输入。GraphicsBase 是所有图形的基类,其中的 Draw(DrawingContext drawingContext) 虚方法用于决定图形的内容。

功能方面比 WinForm 版本少一些,但是基础功能还是齐全的,只是缺少页面相关的功能(这部分是由 Mark Miller 扩展的)。代码方面比 WinForm 版本优化不少,架构的设计、模块的划分、代码的结构更加清晰。

代码结构图

  • Commands

  • Graphics

  • Tools

源码获取

原始项目已经从 CodeProject 上删除了,扩展后的 WinForm 项目还能搜到,但是 CodeProject 上的 WPF 项目彻底没了。我收藏了两个版本的源码,可以前往下载:

  • C# 电子白板软件源码(WinForm & WPF)

如果想了解原始项目的相关扩展,可访问:

  • Extensions to DrawTools
  • DrawTools 2014
  • DrawTools

如果源码有疑问,可以留言交流。

C# 电子白板软件开发相关推荐

  1. 用JAVA编制电子白板软件

    用JAVA编制电子白板软件 用JAVA编制电子白板软件 ----随着 Internet的迅速发展,在Email.WWW.FTP等传统的非实时应用日趋成熟的同时,广大网络用户对在线实时交流的需求不断扩大 ...

  2. 【软件工程】RUP与软件开发5大模型

    软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...

  3. 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)

    本文章的主要内容是我作为一名大四学生.准程序员.up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具.本人也是从去年9月份开始从windows阵营转移到了mac阵营,刚开始使用的时候,也曾主 ...

  4. 一则android软件开发工程师的招聘信息

    岗位职责: 从事Android平台的客户端软件开发 任职资格: 1.一年以上Android平台开发经验: 2.两年以上Java开发经验: 3.熟悉Android开发架构和API调用: 4.熟悉HTTP ...

  5. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台

    在ubuntu14.04操作系统中进行C/C++软件开发,需要安装eclipse以及CDT等各种组件,下载安装包一一安装,之后再进行各种配置可能比较麻烦,在这里推荐一种在线安装方式,安装配置较为方便. ...

  6. (广州)软件开发定制服务,工作流引擎 OA 库存管理系统

    本人专注于工作流的研究设计同时提供软件开发定制服务,工作流引擎 OA系统 库存管理系统 如果有机会合作共事请联系:15817167503(本人在广州) QQ:1311663711 加时请注明软件定制 ...

  7. 每个程序员必看:如何在40岁后继续做软件开发?

    导读: 这是一个 42 岁的开发者所写经验分享文章.并且列出一些他 18 年多身为软件开发者的经验谈.许多部分看完后都会希望自己当时就能够了解,所以很推荐不论是新手或是老手都要好好阅读这一篇文章. 故 ...

  8. 为什么Scrum模式适合软件开发?

    2019独角兽企业重金招聘Python工程师标准>>> 摘自基于Visual Studio 2010 进行敏捷/Scrum模式开发 软件行业至今已经有超过40年的历史,很多在软件工程 ...

  9. 【转载】有软件开发,就要有软件测试!

    移动app市场很大且还在不断发展.有多大呢?两个最流行的移动平台,iOS和Android,为我们提供了一些数据: ▪▪ 1,250,000个可供下载的 app(去年增长了85%) ▪▪ 63,000个 ...

  10. 软件开发面试_如何为成功的软件开发工作面试做准备

    软件开发面试 Job interviews are stressful for many people. Besides the pressure of getting hired, you have ...

最新文章

  1. map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...
  2. jdbc oracle添加数据库连接,JDBC与Oracle数据库连接最常用方法
  3. 梯度下降法参数更新公式的推导
  4. Spring MVC学习笔记——SiteMesh的使用(转)
  5. 动态扩容Linux根目录 (解决/dev/mapper/centos-root 占用了过高问题)
  6. 极客大学架构师训练营 系统架构 消息队列 负载均衡 数据库备份 第10课 听课总结
  7. 机器学习,斯坦福公开课
  8. 干货流出|腾讯内部几近满分的项目管理课程PPT
  9. 机器学习、数据挖掘、神经网络、人工智能和模式识别之间,主要是什么关系
  10. CMMI 项目计划实战
  11. PTA---计算天数
  12. free源码分析---2
  13. c语言父进程创建孙进程,进程的创建与并发的执行-带答案版.doc
  14. 在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 7939(unattended-upgr)持有... 32秒
  15. 一张图读懂一个产业短视频第6期
  16. 一种繁体ppt转换简体的方法(简转繁同样适用)
  17. pgsql 使用技巧
  18. Android 常用图片框架对比
  19. Android返回上一页面的方式
  20. Visual Studio 2010已安装,sql server 2008 management studio安装教程

热门文章

  1. win10cmd重置系统_win10怎么重置电脑 win10重置此电脑的方法【图文】
  2. Java后台开发常用工具集合
  3. 程序猿必备的数电知识,快来看看你掌握多少!(建议收藏)
  4. newifi3 高恪魔改_原地升值?newifi 3 路由器刷入高恪固件教程
  5. 无法加载oracle驱动程序998,无法加载oracle in oradb10g_home2 odbc驱动程序的安装例程,因为存在系统错误代码998 解决方法...
  6. html字体及文本样式设置
  7. AutoCAD2010图边框图.LSP与.DGW文件该放在哪才能正确生成想要的图框
  8. Linux-nmap命令使用
  9. IMO FTPC Part 3-A、B和F级分隔耐火性能测试
  10. Python爬虫基本代码附解析