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

在过载的StrokeCollection上保存/加载InkCanvas和图像

在过载的StrokeCollection上保存/加载InkCanvas和图像是指将InkCanvas中的绘图数据以及相关的图像数据保存到一个StrokeCollection对象中,并在需要时从该对象中加载和恢复这些数据。

StrokeCollection是WPF中用于存储和管理InkCanvas中的笔画数据的类。它可以保存用户在InkCanvas上绘制的所有笔画,并提供了一系列方法和属性来操作和管理这些笔画数据。

保存InkCanvas和图像数据到StrokeCollection的过程可以通过以下步骤完成:

  1. 创建一个新的StrokeCollection对象。
  2. 使用StrokeCollection的Add方法将InkCanvas中的笔画数据添加到StrokeCollection中。
  3. 使用StrokeCollection的AddPropertyData方法将与图像相关的数据(如图像路径、图像大小等)添加到StrokeCollection中。

加载和恢复保存在StrokeCollection中的InkCanvas和图像数据的过程可以通过以下步骤完成:

  1. 创建一个新的InkCanvas对象。
  2. 使用StrokeCollection的GetStrokes方法获取保存在StrokeCollection中的笔画数据,并将其添加到新创建的InkCanvas中。
  3. 使用StrokeCollection的GetPropertyData方法获取与图像相关的数据,并根据需要进行处理和加载。

这种保存和加载的方法可以用于实现一些功能,例如在应用程序中保存用户绘制的图形和笔记,以及在需要时加载和显示这些数据。它可以应用于各种场景,如教育、设计、文档处理等。

腾讯云提供了一系列与云计算相关的产品和服务,其中包括存储、数据库、人工智能等。对于保存和加载InkCanvas和图像数据的需求,可以使用腾讯云的对象存储服务(COS)来存储和管理这些数据。COS是一种高可用、高可靠、低成本的云存储服务,可以帮助用户存储和处理各种类型的数据。您可以通过以下链接了解更多关于腾讯云对象存储服务的信息:

请注意,以上答案仅供参考,具体的实现方式和推荐的产品可能因实际需求和环境而有所不同。

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

相关·内容

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

">InkCanvas> 咱可以从这个 InkCanvas 里面获取当前的笔迹,如下面代码 StrokeCollection strokes = InkCanvas.Strokes; 这里拿到的 StrokeCollection...这里的自定义橡皮擦的核心逻辑就是在 InkCanvas 上再放一个 Canvas 容器,在这个 Canvas 容器里面放自定义的橡皮擦的界面。...因为这个 Canvas 容器在 InkCanvas 的上方,因此自定义的橡皮擦界面也将会在 InkCanvas 上 在界面里面放一个 Canvas 和一个用 Rectangle 表示的自定义外观的橡皮擦...这是为了默认可以在 InkCanvas 上写,而在点击按钮的时候,才设置 EraserCanvas 可见。...也就是说笔迹被插不是在原有的笔迹上删除某些点,而是将一条笔迹修改为多条的方式进行擦掉 这样的设计的好处在于撤销重做的功能很好做,因为原有的笔迹是不动的,是通过替换笔迹的形式,因此只需要保存笔迹的对象即可

94420

WPF中Canvas和InkCanvas

前言 WPF中绘图有两种方式Canvas和InkCanvas Canvas需要完全由自己实现。 InkCanvas已经默认为我们实现了基本的绘制,同时效果也比较好。...InkCanvas 推荐使用InkCanvas,使用它绘制线的时候会自动优化转折的地方,会变得平滑。 InkCanvas本身已经支持使用鼠标或者触屏来画线,下面的示例是使用代码进行画线。...事件无法正常工作,因为它是由InkCanvas处理的,并且没有被冒泡。...推荐 建议使用使用AddHandler,因为PreviewMouseUp实际是在事件执行之前触发,本来我们要在这个事件中要保存已绘制的笔迹,但是实际上会少了最后的一笔,因为最后一笔的绘制还没执行。...事件时生效 private bool _sketching; // 定义下面的变量来解决在部分电脑上touch同时也会触发mouse事件 private

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

    现在很多人还是使用笔和纸来记录,那么可以在电脑输入方式和之前使用的方式一样,很多用户觉得会方便。在win10 我们有一个简单的方法去让用户输入,InkCanvas。...现在edge,OneNote这些都有使用InkCanvas,我们可以在我们的手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写的保存图片,可以识别文字。...-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软的InkCanvas ,这个控件可以手写,需要我们在页面使用他: InkCanvas x:Name="ink_canvas...,修改,加载ink 我们可以给用户选择他当前使用橡皮擦、铅笔还是他需要的。...="Top" HorizontalAlignment="Right" /> TargetInkCanvas属性bind到要设置的InkCanvas上即可。

    1.5K10

    win10 uwp 使用油墨输入

    现在很多人还是使用笔和纸来记录,那么可以在电脑输入方式和之前使用的方式一样,很多用户觉得会方便。在win10 我们有一个简单的方法去让用户输入,InkCanvas。...现在edge,OneNote这些都有使用InkCanvas,我们可以在我们的手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写的保存图片,可以识别文字。...-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软的InkCanvas ,这个控件可以手写,需要我们在页面使用他: InkCanvas x:Name="ink_canvas...,修改,加载ink 我们可以给用户选择他当前使用橡皮擦、铅笔还是他需要的。...}" VerticalAlignment="Top" HorizontalAlignment="Right" /> TargetInkCanvas属性bind到要设置的InkCanvas上即可。

    44410

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

    GPU 或其他加速设备的硬件加速,还可以在设备硬件缺失或不允许的情况下自动调度到 CPU 上运行 接下来我将演示的代码是采用 WinRT 的方式调用 WinML 层。...再放上一个 InkCanvas 控件用来写内容,且由于接下来的 mnist.onnx 模型走的是图像识别的方式,为了提高识别率,还需要让写出来的笔迹粗一些。...在 WPF 里面,渲染不是实时发生的,换句话说是如果你不从 RenderTargetBitmap 里面让其输出像素数组,实际上内部是没有干多少活的 var stride = bitmapSource.PixelWidth...在 WinRT 的 BitmapPixelFormat.Bgra8 表示使用 8 个位表示 B 蓝色,使用 8 个位表示 G 绿色,使用 8 个位表示 R 红色,总共也是 32 位,和 WPF 的 Pbgra32...以及如何加载大佬们训练好的 onnx 模型,和如何执行模型 如果对此演示项目的代码感兴趣,可以通过下面方式获取到本文的所有代码 本文代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文以上的源代码

    49410

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

    墨迹识别 墨迹识别器认知服务提供基于云的 REST API 用于分析和识别数字墨迹内容。 与使用光学字符识别 (OCR) 的服务不同,该 API 需要使用数字墨迹笔划数据作为输入。...数字墨迹笔划是 2D 点(X,Y 坐标,表示数字手写笔或手指的动作)的时序集。 然后,墨迹识别器会识别输入中的形状和手写内容,并返回包含所有已识别实体的 JSON 响应。 ?...引用自微软文档 它不是ocr对图像进行识别,而是对墨迹数据进行识别。墨迹数据的原理主要是一些手写输入设备,比如平板,手写板等。...控件需要使用的是Microsoft.Toolkit.Wpf.UI.Controls包下的,如果本地没有使用nuget进行安装 采集墨迹 inkCanvas load事件里设置输入设备的类型:...在canvas上随便写上几个汉字点击识别按钮。字虽然丑了点,但是结果还是完美的。 ? 总结 使用Azure墨迹识别可以轻松的识别手写输入设备的笔迹。

    1.4K20

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

    ,大家可以在课程上看到。...我们对位图的处理方式,可以实现简单的手绘效果,也就是从左上角到右下角来匀速涂抹出图片;也可以做进一步的处理,比如支持用户在位图的背景上做进一步的线条勾勒,保存为 SVG,绘制时是背景图被勾勒出来的效果;...简单的处理过程包括:利用 InkCanvas 完成绘制后,保存 Ink 数据;获取 Ink 数据,按照 SVG 绘制原理进行绘制;自定义笔触的实现,数据存储和绘制方式。  6....该平台支持将数字化器输入捕获为墨迹数据、生成墨迹数据、管理墨迹数据、在输出设备上以笔划墨迹形式呈现墨迹数据以及通过手写识别将墨迹转换为文本。...来画 UWP 应用中结合了 Autodraw 功能,可以通过人工智能图像识别技术,识别用户绘制的线条,推荐素材供用户使用。

    1.2K30

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

    x:Name="InkCanvas" DockPanel.Dock="Top" Loaded="InkCanvas_Loaded"/> 此时就可以在 WPF 应用中添加...因此咱将在后台代码的 InkCanvas_Loaded 设置让笔迹控件可以在鼠标下画出笔迹 private void InkCanvas_Loaded(object sender, RoutedEventArgs...更多请参阅旁加载安装部分的内容 如果做分发此应用的话,推荐使用 加强版在国内分发 UWP 应用正确方式 通过win32安装UWP应用 的方法进行分发,此时就不需要让用户去关注证书问题 以上的代码放在 github...和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init git remote...WPF 引用 UWP 控件 不打包为 MSIX 分发的方法 如果想给画布加上背景,请看 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法

    1.2K40

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

    包,请参阅 WPF 引用 UWP 控件 不打包为 MSIX 分发的方法 在开始之前,需要了解的是 UWP 的 InkCanvas 控件是没有背景色这个属性的,也就是说 UWP 的 InkCanvas 控件需要依靠外层的容器或者背后的元素给的颜色作为背景色...让 UWP 的控件项目作为实际的 UWP 自定义控件编写的项目,咱将在 UWP 的控件项目里面完成所有的自定义逻辑 如何创建项目和如何组织,还请参阅 官方文档 本文这里就不多说了 回到如何给 UWP 的...InkCanvas 控件添加背景色的方法上,在新建的 UWP 控件项目里面,添加一个自定义的控件,如 CustomInkControl.xaml 控件 在这个控件里面的 XAML 添加如下代码 InkCanvas" Loaded="InkCanvas_OnLoaded">InkCanvas> 为了能在鼠标下进行绘制,在...以上的代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

    2.3K20

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

    /tools/depot_tools google绘图引擎 https://gitee.com/mirrors/skia.git gitee上的google镜像地址: https://gitee.com...https://gitee.com/de-user/angle.git vulkan 支持硬件加速和cpu,imgui使用了vulkan的框架绘制2d wpf wpf支持硬件加速,使用inkcanvas...+来加载是cpu,AddVisualChild才是gpu } visual的显示需要重载,否则无法显示 protected override int VisualChildrenCount protected...override Visual GetVisualChild(int index) wpf把点数据放在path里面gpu绘制(path比较消耗资源,但是效率比gdi高,path成员data一次给1万会很卡,增量加载却不会...) 图像数据放在drawvisual使用gdi+绘制,绘制好以后gpu管理visual数据 参考: http://blog.sina.com.cn/s/blog_6cd824cd0102vznh.html

    1K20

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

    ://gitee.com/mirrors/skia.git 下载依赖库: python tools/git-sync-deps piccaso 矢量绘图框架,android中使用较多 agg 功能和gdi...https://gitee.com/de-user/angle.git wpf wpf支持硬件加速,使用inkcanvas绘图可以看到gpu使用率还是很高的 下面是使用drawvisual元素,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+绘制,绘制好以后gpu管理visual数据 参考: http://blog.sina.com.cn/s/blog_6cd824cd0102vznh.html

    59610

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

    Surface Pen 的使用场景不难想象,就像 iPad 和 Android Pad 配置的笔一样,Surface Pen 也在书写、书画和日常操作中发挥着很重要的作用。...另外 Dial 的操作分为两种模式:off screen 和 on screen,顾名思义就是屏幕外和屏幕上的功能,目前支持 on screen 功能的只有 Surface Studio,其他设备只能...这里我们主要用到了 InkToolbar 和 InkCanvas,InkToolbar 是一个 Ink 工具条,支持自定义按钮,提供多种笔迹/直尺/圆角/橡皮擦等,而 InkCanvas 是用于显示 InkToolbar...InkCanvas 绘制完成后,保存为 Ink 数据;2. 取出 Ink 数据,按照线条长度对拆分,保证每段线条不超过某个阈值,然后把拆分后的 Ink 序列传给 Win2D 去做动态绘制。...定义了这些属性后,在 InkCanvas 中书写时,笔尖结合方向,决定了不同方向笔画的形状和不同的粗细,笔尖的填充,决定了在反复涂画时,是否有颜色加深处理。 ?

    1.1K120

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

    本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 的笔迹的性能比在 WPF 高很多。...但是如果只是使用默认的 InkCanvas 可以做的很少,同时性能也不是特别高,在加上 win2d 才可以做到和来画一样快的性能 在参加微软技术暨生态大会 2018听了邵猛大佬的利用 Windows 新特性开发出更好的手绘视频应用学到了使用...本文的代码不可以用在实际项目上,因为假设用户都是正常书写 在 UWP 的笔迹有设置对笔迹完全控制,在中文翻译,会将 Ink 翻译为墨迹,本文将 Ink 翻译为笔迹或墨迹。...通过测试使用 Pointer 和 InkCanvas 的性能相差在我的设备是 16 ms 左右,需要知道,笔迹的书写过程,相差 16 ms 是一个很大的值。...也就是 InkCanvas 的书写和 UWP 的主线程是分开的 在 UWP 的笔迹渲染是分为三个过程,第一个过程是跟随,也就是将当前的点和上一个点直接连出一条线。

    1.1K20

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

    在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟。...本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功 在 UWP 的 InkCanvas 里开启笔迹书写预测功能只需要设置 InkModelerAttributes 的 PredictionTime...添加以下代码 InkCanvas x:Name="InkCanvas">InkCanvas> 以上代码在界面里存放一个 InkCanvas...设置为最大的 20 毫秒 如此即可完成笔迹书写预测功能,运行代码,在屏幕上用触摸书写,可以看到在实际鼠标光标之前就能画出一段在不断变更的笔迹 修改 PredictionTime 属性的值,可以在性能比较差的设备上看到比较明显的效果...这个技术在许多 UWP 应用上,例如 OneNote UWP 等都是默认开启的 但是毕竟是预测的,肯定存在纠错时候,这时将会发现笔迹的笔尖抖动。

    83920

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

    本文提供的方法的性能依然不如只使用默认的 InkCanvas 快 界面 在开始之前,请先安装 Win2d 库,可参阅 win10 uwp win2d 入门 看这一篇就够了 博客了解如何安装 在 XAML...x:Name="InkCanvas" /> 初始化笔迹接收 在构造函数初始化笔迹的接收逻辑,通过 InkCanvas 进行快速的事件接收 private...的 PointerMoved 事件,事实上需要监听更多的事件用来了解笔迹的绘制开始和完成逻辑。...设置绘制属性的,而不是在创建之后依然可以设置。...原因是笔迹是需要分段的,多段笔迹可以一起绘制。另外,如果有笔迹分段,那么逻辑上就需要额外的转换为静态笔迹的功能,大概就是将一段连续的多段笔迹合成一段笔迹的过程。

    44820

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

    本文告诉大家如何在基于 .NET 6 的 WPF 使用 WinRT 的手写识别功能 在开始之前需要先创建 WPF 项目,创建完成之后,可替换 csproj 项目文件为以下代码,用来安装初始化环境 <Project...NETSDK1112 找不到 win10-arm 失败 另外,还需要你的 VisualStudio 2022 安装对应的负载,如 10.0.19041 负载等,基本上 Visual Studio 告诉你缺哪个就安装哪个...先在 MainWindow.xaml 放入一个 InkCanvas 元素,用来绘制笔迹和创建笔迹对象,代码如下 InkCanvas x:Name="InkCanvas..." StrokeCollected="InkCanvas_OnStrokeCollected">InkCanvas> 在 InkCanvas_OnStrokeCollected...如果期望在 Win10 及以下版本使用笔迹识别,可选使用 Microsoft.Ink 组件 本文以上代码放在github 和 gitee 欢迎访问 可以通过如下方式获取源代码,先创建一个空文件夹,接着使用命令行

    63910

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

    按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用。...但是实际上不打包也可以,此时可以和此前的 Win32 应用一样的分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 的控件,但是至少应用软件自身可以在 Win7 继续运行的...x:Name="InkCanvas" DockPanel.Dock="Top" Loaded="InkCanvas_Loaded" /> 此时运行应用将会报错,...如果想要发布出去,还请右击项目选择发布,就和发布其他 .NET Core 应用的方式进行发布 以上的代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹...InkCanvas 做高性能笔迹应用 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法

    75750

    如何构建可伸缩的Web应用?

    因此,当服务器过载时,整个应用程序将受到影响:页面无法打开,图像无法加载等。 为避免这种情况,需要确保关注点分离。 例如,API server 处理需要即时回复的 client-server 请求。...假设某个用户更改其个人资料图像,上载图像后,通常会对其进行一定的处理:调整图像大小、分析显式内容、保存在存储中 …… 显然,这个过程复杂而耗时,而且用户不需要等待处理完成。...假设你在 YouTube 上观看了一个有趣的视频,该视频存储在加利福尼亚的静态存储服务器中。 你在群聊中发布该链接,如果所有同事同时打开该链接,则服务器压力山大。...这样防止了静态存储服务器过载,用户还可以享受超快的视频加载速度。 Worker 并非所有用户请求都需要服务器的即时答复。 他们可能需要更多的时间才能完成,这些任务可以在用户忙于其他事情时在后台运行。...这些任务由 Workers 和 Message Queue 处理。 Worker 在独立服务器上运行,就像API服务器一样,可以根据负载强度进行扩展。

    85930
    领券