基于 MFC (Microsoft Foundation Classes) 的单文档界面 (SDI) 二维 CAD 应用程序,仿 AutoCAD 交互风格,支持多种图元的绘制与编辑。
| 命令 | 说明 |
|---|---|
| Line | 直线(两点) |
| Polyline | 多段线(连续点击添加顶点,支持闭合) |
| Circle | 圆(圆心 + 半径) |
| Arc | 圆弧(三点定弧) |
| Rectangle | 矩形(对角两点) |
| Polygon | 正多边形(3-12 边,圆心 + 半径) |
| Ellipse | 椭圆(圆心 + X/Y 半径) |
| Text | 单行文字 |
- Move — 移动选中图元(基点 + 目标点)
- Copy — 复制选中图元
- Rotate — 旋转选中图元(中心 + 角度)
- Scale — 缩放选中图元
- Delete — 删除选中图元
- Mirror — 镜像
- Offset — 偏移
- 鼠标滚轮缩放
- 右键拖动平移
- Zoom Extents / Zoom Window
- 网格显示 (Grid)、对象捕捉 (Snap)、正交锁定 (Ortho)
- 7 种颜色:红、黄、绿、青、蓝、品红、白
- 4 种线型:实线、虚线、点线、点划线
- 4 种线宽
- 图层支持
- 撤销/重做 (Undo/Redo)
- 图元选中高亮 + 夹点 (Grips) 拖拽编辑
- 文件序列化保存/打开 (CArchive)
- AutoCAD 风格深色背景 + 十字光标 + UCS 图标
CEntity (抽象基类)
├── CLineEntity 直线
├── CCircleEntity 圆
├── CArcEntity 圆弧(三点)
├── CRectangleEntity 矩形
├── CPolygonEntity 正多边形
├── CEllipseEntity 椭圆
├── CPolylineEntity 多段线
└── CTextEntity 文字
所有图元通过 DECLARE_SERIAL / IMPLEMENT_SERIAL 宏支持 MFC 序列化。
采用 AutoCAD 风格的命令行交互流程,通过 CadDrawState 枚举定义各命令的状态跳转(如 STATE_DRAW_LINE_P1 → STATE_DRAW_LINE_P2),模拟"输入命令 → 指定第一点 → 指定第二点 → 完成"的流程。
- 语言: C++ (MFC)
- IDE: Visual Studio 2019+ (vc142 工具集)
- 平台: Windows
- 界面框架: MFC SDI (单文档界面)
- 使用 Visual Studio 2019 或更高版本打开
LargeHW.sln - 选择 Debug 或 Release 配置
- 生成解决方案 (F7)
- 运行 (F5)
编译输出位于 Debug/LargeHW.exe。
| 文件 | 说明 |
|---|---|
Entity.h / Entity.cpp |
图元类层次结构定义与实现 |
LargeHWView.h / LargeHWView.cpp |
视图层:渲染引擎 + 交互状态机 |
LargeHWDoc.h / LargeHWDoc.cpp |
文档层:图元数据管理 |
MainFrm.h / MainFrm.cpp |
主框架窗口 |
LargeHW.h / LargeHW.cpp |
应用程序入口 |
res/ |
图标、位图等资源文件 |