Object->DispatcherObject->DependencyObject->Visual->UIElement->FrameworkElement->InkCanvas
InkCanvas
定义接收和显示墨迹笔划的区域。
InkCanvas是可用于接收和显示墨迹输入的元素。 这通常是通过使用触笔来完成的,它与数字化仪交互,使用触笔或鼠标生成墨迹笔划。 创建的笔划表示为 Stroke 对象,可通过编程方式或根据用户输入进行操作。 InkCanvas允许用户修改或删除现有的 Stroke 。
InkCanvas可以绑定到数据源。 例如,可以将 Strokes 属性绑定到:以墨迹序列化格式包含墨迹数据的以64编码的编码字符串 (ISF) ,甚至是 Strokes 另一个的属性 InkCanvas 。 您还可以将属性(例如 DefaultDrawingAttributes 和 EditingMode )绑定到其他数据源。
名称 | 备注 | 权限 |
---|---|---|
ActiveEditingModeChangedEvent | 标识 ActiveEditingModeChanged 路由事件。 | public static readonly |
ActiveEditingModeProperty | 标识 ActiveEditingMode 依赖项属性。 | public static readonly |
BackgroundProperty | 标识 Background 依赖项属性。 | public static readonly |
BottomProperty | 标识 Bottom 附加属性。 | public static readonly |
DefaultDrawingAttributesProperty | 标识 DefaultDrawingAttributes 依赖项属性。 | public static readonly |
EditingModeChangedEvent | 标识 EditingModeChanged 路由事件。 | public static readonly |
EditingModeInvertedChangedEvent | 标识 EditingModeInvertedChanged 路由事件。 | public static readonly |
EditingModeInvertedProperty | 标识 EditingModeInverted 依赖项属性。 | public static readonly |
EditingModeProperty | 标识 EditingMode 依赖项属性。 | public static readonly |
GestureEvent | 标识 Gesture 路由事件。 | public static readonly |
LeftProperty | 标识 Left 附加属性。 | public static readonly |
RightProperty | 标识 Right 附加属性。 | public static readonly |
StrokeCollectedEvent | 标识 StrokeCollected 路由事件。 | public static readonly |
StrokeErasedEvent | 标识 StrokeErased 路由事件。 | public static readonly |
StrokesProperty | 标识 Strokes 依赖项属性。 | public static readonly |
TopProperty | 标识 Top 附加属性。 | public static readonly |
名称 | 备注 | 权限 |
---|---|---|
ActiveEditingMode | 获取 InkCanvas 的当前编辑模式。 | get; |
Background | 获取或设置一个 Brush。 画笔用于填充 InkCanvas 周围的边框区域。 | get; set; |
Children | 检索 InkCanvas 的子元素。 | get; |
DefaultDrawingAttributes | 获取或设置应用于在 InkCanvas 上绘制的新墨迹笔画的绘制特性。 | get; set; |
DefaultStylusPointDescription | 获取或设置 InkCanvas 的触笔点说明。 | get; set; |
DynamicRenderer | 获取或设置在 InkCanvas 上动态绘制墨迹的呈现器。 | get; set; |
EditingMode | 获取或设置活动指针设备使用的用户编辑模式。 | get; set; |
EditingModeInverted | 如果触笔在与 InkCanvas 交互时发生反转,则获取或设置用户编辑模式。 | get; set; |
EraserShape | 获取或设置用来按点擦除 StylusShape 中墨迹的 InkCanvas。 | get; set; |
InkPresenter | 获取在 InkCanvas 上显示墨迹的墨迹显示器。 | get; |
IsGestureRecognizerAvailable | 获取(确定)笔势识别组件在用户系统上是否可用。 | get; |
LogicalChildren | 返回用于逻辑子级的枚举器。 | get; |
MoveEnabled | 获取或设置一个布尔值,该值指示是否允许用户移动 InkCanvas 上选定的墨迹笔画和/或元素。 | get; set; |
PreferredPasteFormats | 获取或设置可粘贴到 InkCanvas 中的格式。 | get; set; |
ResizeEnabled | 获取或设置一个布尔值,该值指示用户是否可以调整 InkCanvas 上选定的墨迹笔画和/或元素的大小。 | get; set; |
Strokes | 获取或设置 Stroke 收集的墨迹 InkCanvas 对象集合。 | get; set; |
UseCustomCursor | 获取或设置一个布尔值,该值指示是否重写标准的 InkCanvas 光标功能以支持自定义光标。 | get; set; |
VisualChildrenCount | 获取此元素内可视子元素的数目。 | get; |
名称 | 备注 | 权限 |
---|---|---|
ArrangeOverride | 定位子元素,并确定 InkCanvas 对象的大小。 | protected |
CanPaste | 指示剪贴板的内容是否可以粘贴到 InkCanvas。 | public |
CopySelection | 将选定笔画和/或元素复制到剪贴板。 | public |
CutSelection | 删除选定笔画和元素,并将它们复制到剪贴板。 | public |
GetBottom | 为给定的依赖对象获取 Bottom 附加属性的值。 | public |
GetEnabledGestures | 返回一个由 InkCanvas 识别的应用程序笔势集合。 | public |
GetLeft | 为给定的依赖对象获取 Left 附加属性的值。 | public |
GetRight | 为给定的依赖对象获取 Right 附加属性的值。 | public |
GetSelectedElements | 检索在 FrameworkElement 中选定的 InkCanvas 对象。 | public |
GetSelectedStrokes | 检索一个 StrokeCollection,它表示 Stroke 上选定的 InkCanvas 对象。 | public |
GetSelectionBounds | 获取 InkCanvas 上选定笔画和元素的边界。 | public |
GetTop | 为给定的依赖对象获取 Top 附加属性的值。 | public |
GetVisualChild | 重写 GetVisualChild(Int32),并从子元素集合中返回指定索引处的子元素。 | protected |
HitTestCore | 确定给定点是否落在 InkCanvas 的呈现边界之内。 | protected |
HitTestSelection | 返回一个值,该值指示选择装饰器的哪个部分与指定点相交或包围指定点。 | protected |
MeasureOverride | 测量子元素在布局中所需的大小,并确定 InkCanvas 对象的大小。 | protected |
OnActiveEditingModeChanged | 引发 ActiveEditingModeChanged 事件。 | protected |
OnCreateAutomationPeer | 提供 InkCanvasAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。 | protected |
OnDefaultDrawingAttributesReplaced | 引发 DefaultDrawingAttributesReplaced 事件。 | protected |
OnEditingModeChanged | 引发 EditingModeChanged 事件。 | protected |
OnEditingModeInvertedChanged | 引发 EditingModeInvertedChanged 事件。 | protected |
OnGesture | 引发 Gesture 事件。 | protected |
OnPropertyChanged | 每当更新此 FrameworkElement 的任何依赖属性的有效值时调用。 将在自变量参数中报告已更改的特定依赖属性。 重写 OnPropertyChanged(DependencyPropertyChangedEventArgs)。 | protected |
OnSelectionChanged | 引发 SelectionChanged 事件。 | protected |
OnSelectionChanging | 引发 SelectionChanging 事件。 | protected |
OnSelectionMoved | 一个事件,通告用户选择并移动了所选笔画和/或元素。 | protected |
OnSelectionMoving | 引发 SelectionMoving 事件。 | protected |
OnSelectionResized | 引发 SelectionResized 事件。 | protected |
OnSelectionResizing | 引发 SelectionResizing 事件。 | protected |
OnStrokeCollected | 引发 StrokeCollected 事件。 | protected |
OnStrokeErased | 引发 StrokeErased 事件。 | protected |
OnStrokeErasing | 引发 StrokeErasing 事件。 | protected |
OnStrokesReplaced | 引发 StrokesReplaced 事件。 | protected |
Paste | 将剪贴板的内容粘贴到 InkCanvas。 | public |
Select | 选择一组墨迹 Stroke 对象和/或 FrameworkElement 对象。 | public |
SetBottom | 设置给定的依赖对象设置上的 Bottom 附加属性值。 | public |
SetEnabledGestures | 设置 InkCanvas 将要识别的应用程序笔势。 | public |
SetLeft | 设置给定的依赖对象设置上的 Left 附加属性值。 | public |
SetRight | 设置给定的依赖对象设置上的 Right 附加属性值。 | public |
SetTop | 设置给定的依赖对象设置上的 Top 附加属性值。 | public |
名称 | 备注 |
---|---|
ActiveEditingModeChanged | 在当前编辑模式改变时发生。 |
DefaultDrawingAttributesReplaced | 在替换 DefaultDrawingAttributes 属性时发生。 |
EditingModeChanged | 在 EditingMode 对象的 InkCanvas 属性更改后发生。 |
EditingModeInvertedChanged | 在 EditingModeInverted 对象的 InkCanvas 属性更改后发生。 |
Gesture | 在 InkCanvas 检测到笔势时发生。 |
SelectionChanged | 在 InkCanvas 上的选择更改时发生。 |
SelectionChanging | 在选择了一组新墨迹笔画和/或元素时发生。 |
SelectionMoved | 在用户移动了所选笔画和/或元素之后发生。 |
SelectionMoving | 在移动选定笔画和元素之前发生。 |
SelectionResized | 在用户调整了所选笔画和/或元素大小时发生。 |
SelectionResizing | 在调整选定笔画和元素的大小之前发生。 |
StrokeCollected | 在将用户绘制的笔画添加到 Strokes 属性时发生。 |
StrokeErased | 在用户擦除笔画时发生。 |
StrokeErasing | 恰好在用户擦除笔画之前发生。 |
StrokesReplaced | 在替换 Strokes 属性时发生。 |
名称 | 备注 |
---|---|
void IAddChild.AddChild (object value); | |
void IAddChild.AddText (string textData); |
名称 | 备注 | 权限 |
---|---|---|
获取或设置某元素的下边缘与其父 InkCanvas 的下边缘之间的距离。 | GetBottom、SetBottom | |
获取或设置某元素的左边缘与其父 InkCanvas 的左边缘之间的距离。 | GetLeft、SetLeft | |
获取或设置某元素的右边缘与其父 InkCanvas 的右边缘之间的距离。 | GetRight、SetRight | |
获取或设置某元素的上边缘与其父 InkCanvas 的上边缘之间的距离。 | GetTop、SetTop |
简单范例
<Window x:Class="InkCanvasDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:InkCanvasDemo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<InkCanvas> </InkCanvas>
<StackPanel Grid.Column="1">
<Button Content="笔迹切换" Click="OnSelectInkStrokes"/>
<Button Content="模式:Ink" Click="OnEditingMode"/>
<Button Content="选择笔迹" Click="OnMoveEnabled"/>
</StackPanel>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace InkCanvasDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
DrawingAttributes inkDA = new DrawingAttributes { Color = Colors.SpringGreen,Height = 5,Width = 5,FitToCurve = false };
DrawingAttributes highlighterDA = new DrawingAttributes { Color = Colors.Orchid, IsHighlighter = true, IgnorePressure = true, StylusTip = StylusTip.Rectangle , Height = 30 , Width = 10 };
bool useHighlighter = false;
public MainWindow()
{
InitializeComponent();
}
private void OnSelectInkStrokes(object sender, RoutedEventArgs e)
{
foreach (var item in (this.Content as Grid).Children)
{
if(item is InkCanvas && useHighlighter== false)
{
(item as InkCanvas).DefaultDrawingAttributes = highlighterDA;
useHighlighter = true;
return;
}
if (item is InkCanvas && useHighlighter == true)
{
(item as InkCanvas).DefaultDrawingAttributes = inkDA;
useHighlighter = false;
return;
}
}
}
private void OnEditingMode(object sender, RoutedEventArgs e)
{
foreach (var item in (this.Content as Grid).Children)
{
if (item is InkCanvas )
{
byte editingMode = (byte)(item as InkCanvas).EditingMode;
editingMode++;
if (editingMode > 6) editingMode = 0;
(item as InkCanvas).EditingMode = (InkCanvasEditingMode)editingMode;
(sender as Button).Content = "模式:"+((InkCanvasEditingMode)editingMode).ToString();
}
}
}
private void OnMoveEnabled(object sender, RoutedEventArgs e)
{
foreach (var item in (this.Content as Grid).Children)
{
if (item is InkCanvas )
{
(item as InkCanvas).MoveEnabled = !(item as InkCanvas).MoveEnabled;
if((item as InkCanvas).MoveEnabled) (sender as Button).Content = "允许移动";
else (sender as Button).Content = "禁止移动";
}
}
}
}
}