首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在inkcanvas wpf中显示或绘制文本

在inkcanvas wpf中显示或绘制文本可以通过以下步骤实现:

  1. 创建一个InkCanvas控件,并在XAML中定义其属性和样式。
代码语言:xaml
复制
<InkCanvas x:Name="myInkCanvas" Background="White" />
  1. 在代码中,使用TextBlock或TextBox控件创建一个文本框,并设置其位置、大小和内容。
代码语言:csharp
复制
TextBlock textBlock = new TextBlock();
textBlock.Text = "Hello, World!";
textBlock.FontSize = 20;
InkCanvas.SetLeft(textBlock, 100);
InkCanvas.SetTop(textBlock, 100);
  1. 将文本框添加到InkCanvas中。
代码语言:csharp
复制
myInkCanvas.Children.Add(textBlock);
  1. 如果需要在InkCanvas中绘制文本,可以使用InkPresenter控件。
代码语言:csharp
复制
InkPresenter inkPresenter = new InkPresenter();
inkPresenter.StrokesCollected += InkPresenter_StrokesCollected;
myInkCanvas.Children.Add(inkPresenter);
  1. 在InkPresenter的StrokesCollected事件处理程序中,可以获取用户绘制的笔迹,并将其转换为文本。
代码语言:csharp
复制
private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{
    InkStrokeContainer strokeContainer = args.Strokes.GetInkStrokeContainer();
    IReadOnlyList<InkStroke> strokes = strokeContainer.GetStrokes();
    
    // 将笔迹转换为文本
    RecognizerContainer recognizerContainer = new RecognizerContainer();
    RecognizerContext recognizerContext = recognizerContainer.GetDefaultRecognizer();
    RecognitionResult recognitionResult = await recognizerContext.RecognizeAsync(strokes);
    
    // 获取识别的文本
    string recognizedText = recognitionResult.Text;
    
    // 在InkCanvas中显示识别的文本
    TextBlock textBlock = new TextBlock();
    textBlock.Text = recognizedText;
    InkCanvas.SetLeft(textBlock, 100);
    InkCanvas.SetTop(textBlock, 100);
    myInkCanvas.Children.Add(textBlock);
}

这样,你就可以在InkCanvas中显示或绘制文本了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

本文来告诉大家如何在 WPF 应用 HOST 了 UWP 的 InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能的实现方法 在上一篇博客有告诉大家如何在 WPF 里面使用上...UWP 的 InkCanvas 控件,详细请看 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用 如果不想要打包为 MSIX...控件添加背景色的方法上,在新建的 UWP 控件项目里面,添加一个自定义的控件, CustomInkControl.xaml 控件 在这个控件里面的 XAML 添加如下代码 为了能在鼠标下进行绘制,在...; } 接着 官方文档 的方法,在 WPF 里面使用刚才创建的控件 <Window x:Class="LaykearduchuNachairgurharhear.MainWindow"

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

    阅读本文,你将了解如何自定义橡皮擦,自定义橡皮擦的外观样式,了解如何不依赖 InkCanvas 来实现笔迹的擦除 原本我是想采用 WPF 最简逻辑实现多指顺滑的笔迹书写 的方式来做笔迹的绘制部分的,但是考虑使用上面博客的方法将会让大家需要多了解很多触摸相关的知识...,因此我就简单使用 InkCanvas 来做笔迹的绘制。...以下只是将 InkCanvas 作为笔迹的绘制,而橡皮擦部分是咱定制的 在 XAML 添加一个 InkCanvas 的代码很简单,请看代码 <InkCanvas x:Name="InkCanvas...是一个集合,这个集合里面包含了多个 Stroke 类,在 WPF ,一条笔迹就是一个 Stroke 对象。...上方,如果 EraserCanvas 可见,那么 EraserCanvas 将会吃掉在 InkCanvas 上的交互,鼠标触摸,都会命中到 EraserCanvas 上。

    92920

    WPF何在子线程其他类操控控件

    问题 一开始使用WPF界面的时候,会有这样的需求就是在后台更新控件,以完成列表更新,计时器,进度条等功能,但WPF这边架构限制,决定子线程是不安全的,如果创建子线程直接操作控件就会出错。...例子 我建立有一个类,这一个类中有两个函数,一个是RegistTextbox()用于在调用类时候,将主界面的空间传给它,另一个是AddMessageToTextbox()用于将字符串添加到文本框控件,他们的实现很简单...要访问其他WPF表单的控件,您必须将该控件声明为公共控件。...WPF控件的默认声明是公共的,但是您可以使用以下代码指定它: 之后,您可以在应用程序的所有活动窗口中搜索以找到具有此类控制功能的窗口...Monitor静态类的PartEvent事件

    2K10

    何在 React 实现鼠标悬停显示文本

    在 React 应用,当用户将鼠标悬停在某个元素上时,我们经常需要显示一些相关的文本,以提供额外的信息交互提示。...本文将详细介绍如何在 React 实现鼠标悬停显示文本的功能,并提供示例代码帮助你理解和应用这个功能。...在示例代码,我们使用了 onMouseEnter 和 onMouseLeave 事件来监听鼠标进入和离开元素的事件。你也可以使用其他鼠标事件, onMouseOver 和 onMouseOut。...在 React ,有一些流行的库可以帮助我们实现鼠标悬停显示文本的功能, react-tooltip 和 react-popper-tooltip继续上述内容:使用 react-tooltipreact-tooltip...结论本文详细介绍了在 React 实现鼠标悬停显示文本的两种方法:使用状态管理和使用第三方库。通过手动管理状态使用第三方库,我们可以根据用户的悬停行为来显示和隐藏文本,提供更好的用户体验和交互。

    3.2K10

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

    数字墨迹笔划是 2D 点(X,Y 坐标,表示数字手写笔手指的动作)的时序集。 然后,墨迹识别器会识别输入的形状和手写内容,并返回包含所有已识别实体的 JSON 响应。 ?...新建一个WPF项目 我们这次同样实现一个WPF小程序。界面上放置一个InkCanvas用来手写,一个文本框用来显示识别的文本,一个按钮用来触发识别。 ?...x:Name="inkCanvas" Loaded="inkCanvas_Loaded"/> <Border Grid.Row ="1" BorderBrush...控件需要使用的是Microsoft.Toolkit.Wpf.UI.Controls包下的,如果本地没有使用nuget进行安装 采集墨迹 inkCanvas load事件里设置输入设备的类型:...private void inkCanvas_Loaded(object sender, RoutedEventArgs e) { inkCanvas.InkPresenter.InputDeviceTypes

    1.4K20

    WPF 笔迹算法 从点集转笔迹轮廓

    本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。...尽管本文标记的是 WPF 的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的 UI 框架上,包括 UWP WinUI UNO MAUI Eto 等框架...根据点集创建一条笔迹轨迹的一个实现方式是创建一条几何图形,将几何图形绘制到界面上。在 UI 框架的底层里,是不存在笔迹的概念的,只有画图、画文本、画几何图形等基础绘制原语而已。...最简逻辑实现多指顺滑的笔迹书写 调用 WPF 自带的笔迹绘制的方法不顺滑好多,而且绘制速度也差好多 先忘掉 WPF 的上层调用,假如现在咱想要自己编写算法来画一条比 WPF 不会差太多的笔迹轨迹,可以如何做呢...,最后构建输出的也依然是一个 WPF 应用 新建一个 UNO 项目,在 MainPage.xaml 里面监听事件,制作一些准备辅助笔迹绘制的界面逻辑,简单的代码如下 <Canvas x:Name="<em>InkCanvas</em>

    47210

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

    包括在书写过程中切换模式,进行手势擦除切换为橡皮擦模式 本文提供的方法适合用来做复杂的自定义,本文的方法的优点也是缺点。优点是啥都可以自己控制,缺点是啥都需要自己控制。...需要自己处理笔迹的多笔同步问题,处理笔迹的长笔迹分段问题,处理笔迹的绘制问题,处理动态笔迹切换 本文提供的方法依然可以实现非常高性能的笔迹,比 WPF 最快的笔迹实现还要快,但需要自己处理好各个部分的逻辑...,动态笔迹和静态笔迹,笔迹分段等逻辑。...以上各个部分逻辑的含义,请参阅 win10 uwp 通过 win2d 画出笔迹 收集笔迹 在 UnprocessedInput_PointerMoved 将是本文的核心逻辑,在这里通过事件参数了解到当前是哪个手指笔触摸...重新绘制会进入 Canvas_OnDraw 方法,将在此方法绘制出笔迹 绘制笔迹 绘制笔迹的方法十分简单,调用 Win2d 的 DrawInk 方法传入笔迹即可 private void

    44320

    绘制2d图形除了gdi还有很多开发库

    https://gitee.com/mirrors/ocaml-cairo.git angle webgl的硬件支持接口 https://gitee.com/de-user/angle.git wpf...wpf支持硬件加速,使用inkcanvas绘图可以看到gpu使用率还是很高的 下面是使用drawvisual元素,gdi+绘图的代码,wpf使用gdi绘图,元素的渲染使用contentprsent...mVisual.Add(visual); AddVisualChild(visual); //使用onrender的gdi+来加载是cpu,AddVisualChild才是gpu } visual的显示需要重载...,否则无法显示 protected override int VisualChildrenCount protected override Visual GetVisualChild(int index...) wpf把点数据放在path里面gpu绘制(path比较消耗资源,但是效率比gdi高,path成员data一次给1万会很卡,增量加载却不会) 图像数据放在drawvisual使用gdi+绘制绘制好以后

    57510

    c++绘制2d图形除了gdi还有很多开发库

    ocaml-cairo.git angle webgl的硬件支持接口 https://gitee.com/de-user/angle.git vulkan 支持硬件加速和cpu,imgui使用了vulkan的框架绘制...2d wpf wpf支持硬件加速,使用inkcanvas绘图可以看到gpu使用率还是很高的 下面是使用drawvisual元素,gdi+绘图的代码,wpf使用gdi绘图,元素的渲染使用contentprsent...mVisual.Add(visual); AddVisualChild(visual); //使用onrender的gdi+来加载是cpu,AddVisualChild才是gpu } visual的显示需要重载...,否则无法显示 protected override int VisualChildrenCount protected override Visual GetVisualChild(int index...) wpf把点数据放在path里面gpu绘制(path比较消耗资源,但是效率比gdi高,path成员data一次给1万会很卡,增量加载却不会) 图像数据放在drawvisual使用gdi+绘制绘制好以后

    96620

    高性能笔迹原理

    显示器屏幕收到 HDMI 输出到屏幕刷新需要的时间是 16 毫秒 那么此时极限优化的笔迹延时就是三个硬件中速度最慢的触摸框硬件,也就是 30 毫秒以上 这就是高性能笔迹的核心了 在 Windows 下...如果不选 WPF 那么应该选其他 DX 体系下的框架, UWP 等 在 Win10 下,采用 UWP 能使用 DirectComposition 技术,应用本身自己能使用,这和 WPF 不相同。...如果在框架层上使用,请看 WPF 使用 Composition API 做高性能渲染 因此 Win10 下的 UWP 能做到最快的笔迹,在 Win10 下,一个空应用加上一个空 InkCanvas 就能做到...因此不要让笔迹线程的优先级太低 在 WPF UI 线程主线程和渲染线程是两个不同的线程。而触摸线程也是一个独立的线程。可以再开启一个笔迹线程作为一个独立线程。...USB 读取快 在 WPF 如何使用 RealTimeStylus 请看 WPF 高速书写 StylusPlugIn 原理 在 WinForms 请看 WinForms 下的高性能笔迹方法 ---

    85721

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

    本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 的笔迹的性能比在 WPF 高很多。...本文的代码不可以用在实际项目上,因为假设用户都是正常书写 在 UWP 的笔迹有设置对笔迹完全控制,在中文翻译,会将 Ink 翻译为墨迹,本文将 Ink 翻译为笔迹墨迹。...至于为什么通过 InkCanvas 收集笔迹需要在本文下方告诉大家 InkCanvas 的原理。...如果 InkCanvas 只是更快收到触摸消息,那么也无法做到像现在这么快的速度。尝试写一个空白的 UWP 程序,在里面添加笔迹控件,在移动的过程,进入断点,这时你还可以继续在 UWP 应用上画。...将笔迹转为静态就可以让笔迹变为一个界面元素,参与界面的变化,选择和层级这些业务。

    1K20

    WPFCanvas和InkCanvas

    前言 WPF绘图有两种方式Canvas和InkCanvas Canvas需要完全由自己实现。 InkCanvas已经默认为我们实现了基本的绘制,同时效果也比较好。...InkCanvas 推荐使用InkCanvas,使用它绘制线的时候会自动优化转折的地方,会变得平滑。 InkCanvas本身已经支持使用鼠标或者触屏来画线,下面的示例是使用代码进行画线。...画线 如下在BlackboardCanvas绘制一条直线 private void DrawTest() { // 创建一条直线 List pointList = new...StylusPoint(300, 200)); 鼠标事件绘制 在实际绘制我们可以在鼠标按下时添加对象 Stroke stroke = new Stroke(new StylusPointCollection...推荐 建议使用使用AddHandler,因为PreviewMouseUp实际是在事件执行之前触发,本来我们要在这个事件要保存已绘制的笔迹,但是实际上会少了最后的一笔,因为最后一笔的绘制还没执行。

    1.2K20

    WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移

    本文记录 WPF 触摸的一个已知问题,仅在开启 WM_Pointer 消息之后,将应用程序运行在包含多个屏幕的带触摸屏的设备上,如此时在非主屏幕的触摸屏上进行触摸,使用 GetStylusPoint ...复现步骤: 创建一个空 WPF 程序,按照 WPF dotnet core 如何开启 Pointer 消息的支持 博客提供的方法开启 WM_Pointer 消息 在 MainWindow 放入 InkCanvas...运行程序,将程序的主窗口移动到副屏上,对应用程序进行触摸 此时你将会发现应用程序无法绘制出你所画出的笔迹。...如果你将整个窗口缩放很大,跨了你的两个屏幕,你将会发现在副屏上所画的内容将会显示到主屏幕上去。...且所偏差的坐标差值刚好是整个屏幕距离,如果刚好你的两个屏幕的虚拟尺寸(非物理尺寸)是一样大的,那这个偏差就更好看出来了,如下图 问题原因: 此问题是在 WPF 框架的 HwndPointerInputProvider.cs

    30510

    Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用

    二维动画视频,可以分为 MG 动画、平面手绘动画和二维沙画动画;三维动画视频,可以分为三维拍摄动画、真人结合动画和三维虚拟生成动画;     手绘动画视频,是在动画视频出现用真实的手笔进行绘制移动的各种文字...简单的处理过程包括:利用 InkCanvas 完成绘制后,保存 Ink 数据;获取 Ink 数据,按照 SVG 绘制原理进行绘制;自定义笔触的实现,数据存储和绘制方式。  6....该平台支持将数字化器输入捕获为墨迹数据、生成墨迹数据、管理墨迹数据、在输出设备上以笔划墨迹形式呈现墨迹数据以及通过手写识别将墨迹转换为文本。...而平台的组件包括 InkCanvas 和 InkToolbar,利用它们可以完成 Ink 的接收和显示,以及笔触的选择、粗细和颜色的选择等操作; 2....,这些按钮可激活关联 InkCanvas 与墨迹相关的功能。

    1.2K30

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

    而在手绘视频,用户主动创作、体现个性化最重要的部分,就是用户用鼠标、手指触控 Surface Pen 操作的文字和绘画了,相比鼠标和手指,Surface Pen 无疑是最适合创作的了。 ...这里我们主要用到了 InkToolbar 和 InkCanvas,InkToolbar 是一个 Ink 工具条,支持自定义按钮,提供多种笔迹/直尺/圆角/橡皮擦等,而 InkCanvas 是用于显示 InkToolbar...选择的画笔绘制出来的笔迹的。...InkCanvas 绘制完成后,保存为 Ink 数据;2. 取出 Ink 数据,按照线条长度对拆分,保证每段线条不超过某个阈值,然后把拆分后的 Ink 序列传给 Win2D 去做动态绘制。...定义了这些属性后,在 InkCanvas 书写时,笔尖结合方向,决定了不同方向笔画的形状和不同的粗细,笔尖的填充,决定了在反复涂画时,是否有颜色加深处理。 ?

    1.1K120

    dotnet Framework 源代码 · Ink

    但是上面说了动态笔迹是用户检测到摸到屏幕就画,但是收集很多点才可以算出用户的线,可以看到动态笔迹说的就是在显示的时候还支持不停修改,也就是画出的线不是最后显示的线,在画的时候就可以不停修改。...动态笔迹 在 WPF 的 Ink 的源代码可以看到 InkCanvas 使用 DynamicRenderer 作为动态笔迹层。动态笔迹层是什么?...动态笔迹是笔迹绘制模块,这个模块处理的是从触摸线程拿到触摸数据,然后快速绘制在屏幕。...这里关键的在于什么时候绘制在动态笔迹层的笔迹消失,什么时候绘制在主线程的笔迹显示的问题,这里就是 WPF 笔迹模块的一个核心。...因为这就是第二个原因,在 WPF 主线程和渲染线程分开,而笔迹线程和渲染线程分开,也就是笔迹线程告诉渲染线程动态笔迹层的笔迹要消息,到渲染线程从屏幕移除动态笔迹层是有延迟,而主线程从告诉渲染线程绘制笔迹到渲染线程将笔迹绘制到屏幕也是有延迟

    62020
    领券