WPF InkCanvas 控件详解
1. InkCanvas 是什么?
InkCanvas
是 WPF 提供的一个手写绘图控件,它允许用户使用鼠标、触摸屏或手写笔在界面上进行绘图、标注等操作。
核心特点:
✅ 具备笔迹存储和管理功能。
✅ 提供 Children
和 Strokes
两个集合,分别用于管理子控件和绘制的笔迹。
✅ 通过 EditingMode
属性控制交互模式,比如绘制、擦除、选择等。
✅ 可结合 InkStroke
进行笔迹管理、存储、撤销等操作。
2. InkCanvas 的核心集合
InkCanvas
主要包含两个重要的子集合:
集合名称 | 作用 |
---|---|
Children | 存储 UIElement 子控件,如 Button 、TextBox 等 |
Strokes | 存储用户绘制的笔迹数据,可用于保存、撤销、重绘等 |
示例:向 Children
添加一个按钮
Button myButton = new Button { Content = "清除", Width = 80, Height = 30 };
Canvas.SetLeft(myButton, 10);
Canvas.SetTop(myButton, 10);
myInkCanvas.Children.Add(myButton);
示例:操作 Strokes
集合
// 清空所有笔迹
myInkCanvas.Strokes.Clear();
3. InkCanvas.EditingMode 属性
EditingMode
控制 InkCanvas
的交互方式,共有7 种模式:
值 | 作用 | 示例 |
---|---|---|
Ink | 默认模式,使用笔绘制线条 | 适用于手写绘图 |
GestureOnly | 只识别手势,不绘制 | 用于手势识别 |
InkAndGesture | 允许绘制,同时识别手势 | 适用于支持手势的绘图软件 |
Select | 允许选择已有的笔迹对象 | 适用于编辑模式 |
EraseByStroke | 擦除整条笔迹 | 适用于橡皮擦工具 |
EraseByPoint | 逐点擦除笔迹 | 适用于精细擦除 |
None | 禁用 InkCanvas 的所有交互 |
适用于只展示内容,不允许修改 |
4. 代码示例:不同模式的使用
1️⃣ 绘制模式(Ink)
<InkCanvas x:Name="my