C# 电子白板软件开发

C# 电子白板软件开发

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

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

WinForm.DrawTools

C# 电子白板软件开发_第1张图片

使用 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) 虚方法用于决定图形的内容。

C# 电子白板软件开发_第2张图片

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

代码结构图

  • Commands

C# 电子白板软件开发_第3张图片

  • Graphics

C# 电子白板软件开发_第4张图片

  • Tools

C# 电子白板软件开发_第5张图片

源码获取

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

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

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

  • Extensions to DrawTools
  • DrawTools 2014
  • DrawTools

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

你可能感兴趣的:(C#/WinForm/WPF,.NET)