UI⑥FrameworkElement族控件InkCanvas

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 中墨迹的 InkCanvasget; 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指示剪贴板的内容是否可以粘贴到 InkCanvaspublic
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将剪贴板的内容粘贴到 InkCanvaspublic
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 属性时发生。
接口
名称备注

IAddChild.AddChild

void IAddChild.AddChild (object value);

IAddChild.AddText

void IAddChild.AddText (string textData);
附加属性
名称备注权限

Bottom

获取或设置某元素的下边缘与其父 InkCanvas 的下边缘之间的距离。GetBottom、SetBottom

Left

获取或设置某元素的左边缘与其父 InkCanvas 的左边缘之间的距离。GetLeft、SetLeft

Right

获取或设置某元素的右边缘与其父 InkCanvas 的右边缘之间的距离。GetRight、SetRight

Top

获取或设置某元素的上边缘与其父 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 = "禁止移动";
                }
            }
        }
    }
}

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值