首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏码客

    WPF中Canvas和InkCanvas

    前言 WPF中绘图有两种方式Canvas和InkCanvas Canvas需要完全由自己实现。 InkCanvas已经默认为我们实现了基本的绘制,同时效果也比较好。 InkCanvas 推荐使用InkCanvas,使用它绘制线的时候会自动优化转折的地方,会变得平滑。 InkCanvas本身已经支持使用鼠标或者触屏来画线,下面的示例是使用代码进行画线。 = Colors.Red, Width = 3 }; stroke.DrawingAttributes = drawingAttributes; // 添加到InkCanvas pencolor, Width = _pensize }; stroke.DrawingAttributes = drawingAttributes; // 添加到InkCanvas Color pencolor) { Init(canvas, pencolor); } private void Init(InkCanvas

    1.7K20编辑于 2023-07-11
  • 来自专栏JusterZhu

    开源项目Avalonia DotNetCampus.InkCanvas

    DotNetCampus.InkCanvas(书写笔迹画板) 起源于 Avalonia 社区的一个实际需求(AvaloniaUI/issues/1477),旨在为.NET 开发者提供一款开箱即用的笔迹画板控件 作者:lindexi 仓库地址:https://github.com/dotnet-campus/DotNetCampus.InkCanvas 欢迎各位参与开源项目的建设,多多star! Avalonia InkCanvas 快速开始 安装 NuGet 包 DotNetCampus.AvaloniaInkCanvas <ItemGroup> <PackageReference 控件 xmlns:inking="using:DotNetCampus.Inking" <inking:InkCanvas x:Name="InkCanvas"/> 在代码中使用 InkCanvas InkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint; FAQ Q: 这个库支持 AOT 编译吗?

    17810编辑于 2025-11-24
  • 来自专栏林德熙的博客

    win10 uwp InkCanvas控件数据绑定

    本文主要说如何绑定InkCanvas,让笔画变化的时候我们可以知道。 = d as InkCanvas; if (inkCanvas ! = null) inkCanvas.InkPresenter.StrokeContainer = e.NewValue as InkStrokeContainer; } } 我们使用InkCanvas <InkCanvas local:InkCanvasBinder.InkStrokes="{x:Bind AnInkStrokeContainer}" /> 参见:https://github.com /Microsoft/Windows-task-snippets/blob/master/tasks/InkCanvas-data-binding.md

    32820编辑于 2022-08-07
  • 来自专栏林德熙的博客

    win10 uwp InkCanvas控件数据绑定

    本文主要说如何绑定InkCanvas,让笔画变化的时候我们可以知道。 = d as InkCanvas; if (inkCanvas ! = null) inkCanvas.InkPresenter.StrokeContainer = e.NewValue as InkStrokeContainer; } } 我们使用InkCanvas <InkCanvas local:InkCanvasBinder.InkStrokes="{x:Bind AnInkStrokeContainer}" /> 参见:https://github.com /Microsoft/Windows-task-snippets/blob/master/tasks/InkCanvas-data-binding.md ----

    71210发布于 2018-09-18
  • 来自专栏林德熙的博客

    WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法

    本文来告诉大家如何在 WPF 应用 HOST 了 UWP 的 InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能的实现方法 在上一篇博客有告诉大家如何在 WPF 里面使用上 UWP 的 InkCanvas 控件,详细请看 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用 如果不想要打包为 MSIX 包,请参阅 WPF 引用 UWP 控件 不打包为 MSIX 分发的方法 在开始之前,需要了解的是 UWP 的 InkCanvas 控件是没有背景色这个属性的,也就是说 UWP 的 InkCanvas 控件需要依靠外层的容器或者背后的元素给的颜色作为背景色 x:Name="InkCanvas" Loaded="InkCanvas_OnLoaded"></InkCanvas> </Grid> </UserControl> 为了能在鼠标下进行绘制,在 InkCanvas_OnLoaded 设置支持鼠标 private void InkCanvas_OnLoaded(object sender, RoutedEventArgs e)

    3.3K20发布于 2021-08-23
  • 来自专栏.NET开发那点事

    Azure认知服务之使用墨迹识别功能识别手写汉字

    界面上放置一个InkCanvas用来手写,一个文本框用来显示识别的文本,一个按钮用来触发识别。 ? x:Name="inkCanvas" Loaded="inkCanvas_Loaded"/> </Border> <Border Grid.Row ="1" BorderBrush <Button Click="Button_InkRec">开始识别</Button> </StackPanel> </Grid> </Window> 注意:InkCanvas 控件需要使用的是Microsoft.Toolkit.Wpf.UI.Controls包下的,如果本地没有使用nuget进行安装 采集墨迹 inkCanvas load事件里设置输入设备的类型: private void inkCanvas_Loaded(object sender, RoutedEventArgs e) { inkCanvas.InkPresenter.InputDeviceTypes

    1.7K20发布于 2020-08-24
  • 来自专栏林德熙的博客

    WPF 实现自定义的笔迹橡皮擦

    ,因此我就简单使用 InkCanvas 来做笔迹的绘制。 以下只是将 InkCanvas 作为笔迹的绘制,而橡皮擦部分是咱定制的 在 XAML 中添加一个 InkCanvas 的代码很简单,请看代码 <InkCanvas x:Name="InkCanvas "></InkCanvas> 咱可以从这个 InkCanvas 里面获取当前的笔迹,如下面代码 StrokeCollection strokes = InkCanvas.Strokes; 这里拿到的 StrokeCollection 因为这个 Canvas 容器在 InkCanvas 的上方,因此自定义的橡皮擦界面也将会在 InkCanvas 上 在界面里面放一个 Canvas 和一个用 Rectangle 表示的自定义外观的橡皮擦 ,大家可以使用自己喜欢的控件来代替 Rectangle 控件 <InkCanvas x:Name="InkCanvas"></InkCanvas> <Canvas x:Name

    1.2K20发布于 2021-03-16
  • 来自专栏林德熙的博客

    WPF 尝试使用 WinML 做一个简单的手写数字识别应用

    再放上一个 InkCanvas 控件用来写内容,且由于接下来的 mnist.onnx 模型走的是图像识别的方式,为了提高识别率,还需要让写出来的笔迹粗一些。 x:Name="InkCanvas"> <InkCanvas.DefaultDrawingAttributes> <DrawingAttributes Width="22" Height="22"></DrawingAttributes> </InkCanvas.DefaultDrawingAttributes> </InkCanvas> <Grid Grid.Row="1"> <Button x:Name="RecognizeButton" Margin="10,10,10,10 ; var height = (int) <em>InkCanvas</em>.ActualHeight; var bitmapSource = new RenderTargetBitmap

    97110编辑于 2023-12-11
  • 来自专栏林德熙的博客

    win10 uwp 使用油墨输入 保存,修改,加载inkUWP 手写清理笔画手写识别无法识别手写语音

    在win10 我们有一个简单的方法去让用户输入,InkCanvas。 现在edge,OneNote这些都有使用InkCanvas,我们可以在我们的手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写的保存图片,可以识别文字。 /09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软的InkCanvas ,这个控件可以手写,需要我们在页面使用他: <Grid> <InkCanvas x:Name="ink_canvas"/> </Grid> 然后我们就可以写出我们的字,试试使用鼠标在程序写字。 InkPresenter可以获取 InkCanvas 基础对象,可以设置输入为笔,触摸,鼠标,上面那个是从微软拿来,因为我是在用电脑。

    1.8K10发布于 2018-09-18
  • 来自专栏林德熙的博客

    WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用

    :Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <controls:InkCanvas x:Name="InkCanvas" DockPanel.Dock="Top" Loaded="InkCanvas_Loaded"/> </Grid> </Window> 此时就可以在 WPF 应用中添加 UWP 的 InkCanvas 控件了,但是默认此控件是不能写字的。 因此咱将在后台代码的 InkCanvas_Loaded 设置让笔迹控件可以在鼠标下画出笔迹 private void InkCanvas_Loaded(object sender, RoutedEventArgs e) { InkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse;

    1.7K40编辑于 2021-12-23
  • 来自专栏林德熙的博客

    win10 uwp 通过 win2d 画出笔迹 界面笔迹性能原理完全控制墨迹多指输入转换笔迹无限漫游

    界面 如果想要在 win2d 画出笔迹,还是需要使用 InkCanvas 来收集笔迹,不能直接通过 Pointer 来做。 通过测试使用 Pointer 和 InkCanvas 的性能相差在我的设备是 16 ms 左右,需要知道,笔迹的书写过程,相差 16 ms 是一个很大的值。 至于为什么通过 InkCanvas 收集笔迹需要在本文下方告诉大家 InkCanvas 的原理。 x:Name="InkCanvas"/> 笔迹性能原理 为什么通过 InkCanvas 可以拿到很高的性能? 记录笔迹 多指输入 原来的 InkCanvas 不支持多指输入,通过下面的代码可以让 InkCanvas 支持多笔 InkCanvas.InkPresenter.SetPredefinedConfiguration

    1.3K20发布于 2019-03-13
  • 来自专栏林德熙的博客

    win10 uwp 通过 Win2d 完全控制笔迹绘制逻辑

    本文提供的方法的性能依然不如只使用默认的 InkCanvas 快 界面 在开始之前,请先安装 Win2d 库,可参阅 win10 uwp win2d 入门 看这一篇就够了 博客了解如何安装 在 XAML x:Name="InkCanvas" /> </Grid> 本文将使用一个 InkCanvas 放在 Win2d 的 CanvasControl 上层,让 InkCanvas 作为快速的事件接收层 x:Name="InkCanvas" /> </Grid> </Page> 初始化笔迹接收 在构造函数初始化笔迹的接收逻辑,通过 InkCanvas 进行快速的事件接收 private (); InkCanvas.InkPresenter.SetPredefinedConfiguration(InkPresenterPredefinedConfiguration += UnprocessedInput_PointerMoved; InkCanvas.InkPresenter.InputProcessingConfiguration.Mode

    67220发布于 2021-09-07
  • 来自专栏林德熙的博客

    WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能

    还需要你的 VisualStudio 2022 安装对应的负载,如 10.0.19041 负载等,基本上 Visual Studio 告诉你缺哪个就安装哪个 先在 MainWindow.xaml 放入一个 InkCanvas 元素,用来绘制笔迹和创建笔迹对象,代码如下 <Grid> <InkCanvas x:Name="InkCanvas" StrokeCollected="InkCanvas_OnStrokeCollected "></InkCanvas> </Grid> 在 InkCanvas_OnStrokeCollected 方法里面执行手写识别功能,以下是识别形状的代码逻辑 using Windows.Foundation Windows.UI.Input.Inking.Analysis; using Point = Windows.Foundation.Point; private async void InkCanvas_OnStrokeCollected

    90410编辑于 2023-04-27
  • 来自专栏林德熙的博客

    win10 uwp 笔迹书写预测 墨迹书写加速

    在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟。 本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功 在 UWP 的 InkCanvas 里开启笔迹书写预测功能只需要设置 InkModelerAttributes 的 PredictionTime InkModelerAttributes 是 InkDrawingAttributes 里的一个属性 演示的项目如下,先在 MainPage.xaml 添加以下代码 <Grid> <InkCanvas x:Name="InkCanvas"></InkCanvas> </Grid> 以上代码在界面里存放一个 InkCanvas 元素 接着在构造函数使用以下代码设置笔迹书写预测 var inkPresenter = InkCanvas.InkPresenter; inkPresenter.InputDeviceTypes =

    1.1K20编辑于 2023-04-07
  • 来自专栏林德熙的博客

    win10 uwp 使用油墨输入

    在win10 我们有一个简单的方法去让用户输入,InkCanvas。 现在edge,OneNote这些都有使用InkCanvas,我们可以在我们的手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写的保存图片,可以识别文字。 /09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软的InkCanvas ,这个控件可以手写,需要我们在页面使用他: <Grid> <InkCanvas x:Name="ink_canvas"/> </Grid> 然后我们就可以写出我们的字,试试使用鼠标在程序写字。 InkPresenter可以获取 InkCanvas 基础对象,可以设置输入为笔,触摸,鼠标,上面那个是从微软拿来,因为我是在用电脑。

    71110编辑于 2022-08-09
  • 来自专栏林德熙的博客

    WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

    mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <controls:InkCanvas x:Name="InkCanvas" DockPanel.Dock="Top" Loaded="InkCanvas_Loaded" /> </Grid> </Window> 此时运行应用将会报错, LaykearduchuNachairgurharhear 文件夹 更多 WPF 引用 UWP 做高性能笔迹文档请看: WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法

    1.1K50编辑于 2021-12-23
  • 来自专栏林德熙的博客

    win10 uwp 在笔迹开始书写拿到书写移动事件

    在使用 InkCanvas 的过程,无法直接通过 Pointer 消息拿到书写移动,需要使用 StrokeInput 才能获取到 在 InkCanvas.InkPresenter.StrokeInput StrokeContinued 、StrokeEnded 这些看名字就知道是干什么用的事件,通过这些事件可以在书写的过程拿到触摸事件或鼠标事件 使用 StrokeContinued 作为例子,先在 XAML 界面放一个 InkCanvas 控件,同时修改他的属性名是 InkCanvas 在后台代码可以这样写 InkCanvas.InkPresenter.StrokeInput.StrokeContinued += 方法创建 CoreWetStrokeUpdateSource 请看代码 var coreWetStrokeUpdateSource = CoreWetStrokeUpdateSource.Create(inkCanvas.InkPresenter ); 这个事件有一点坑的是有加入的时机问题,请确保在所有的 InkCanvas 包括他的容器都 Loaded 完成之后才可以使用这个事件,不然是不会有触发的 通过 coreWetStrokeUpdateSource

    69430发布于 2019-06-15
  • 来自专栏ASP.NETCore

    WPF使ListBox支持手势多选功能

    这里我们用到了InkCanvas,它有一个Gesture事件,在这个事件中我们可以得到我们所画出的形状的区域及 e.Strokes[0].GetGeometry(),然后我们对这ListBox的这个区域做命中检查 代码如下: 查看XAML <InkCanvas EditingMode="None" Grid.ColumnSpan="2" Name="m_ic" Height="350" VerticalAlignment xiaoge" /> <ListBoxItem Content="wefwefwefwef" /> </ListBox> </InkCanvas

    98130发布于 2018-09-05
  • 来自专栏walterlv - 吕毅的博客

    Good Framework Rely on Good Api —— Six API Design Principles

    InkCanvas of UWP is a good practice of this principal. You can use an InkCanvas To accept inks by writing only a simple line: <InkCanvas x:Name="inkCanvas" docs.microsoft.com/en-us/windows/uwp/design/input/pen-and-stylus-interactions // Set supported inking device types. inkCanvas.InkPresenter.InputDeviceTypes Windows.UI.Colors.Black; drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes

    61020发布于 2018-09-18
  • 来自专栏Windows Community

    UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial

    这里我们主要用到了 InkToolbar 和 InkCanvas,InkToolbar 是一个 Ink 工具条,支持自定义按钮,提供多种笔迹/直尺/圆角/橡皮擦等,而 InkCanvas 是用于显示 InkToolbar InkCanvas 绘制完成后,保存为 Ink 数据;2. 取出 Ink 数据,按照线条长度对拆分,保证每段线条不超过某个阈值,然后把拆分后的 Ink 序列传给 Win2D 去做动态绘制。 定义了这些属性后,在 InkCanvas 中书写时,笔尖结合方向,决定了不同方向笔画的形状和不同的粗细,笔尖的填充,决定了在反复涂画时,是否有颜色加深处理。 ?

    1.3K120发布于 2018-04-28
领券