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

如何在UWP中实现InkCanvas和Canvas之间的切换

在UWP中实现InkCanvas和Canvas之间的切换可以通过以下步骤完成:

  1. 创建一个UWP应用程序,并在XAML文件中添加一个InkCanvas和一个Canvas控件。
代码语言:txt
复制
<Grid>
    <InkCanvas x:Name="inkCanvas" />
    <Canvas x:Name="canvas" Visibility="Collapsed" />
</Grid>
  1. 在代码中,使用事件处理程序或命令来处理切换操作。
代码语言:txt
复制
private void SwitchButton_Click(object sender, RoutedEventArgs e)
{
    if (inkCanvas.Visibility == Visibility.Visible)
    {
        // 切换到Canvas
        inkCanvas.Visibility = Visibility.Collapsed;
        canvas.Visibility = Visibility.Visible;
    }
    else
    {
        // 切换到InkCanvas
        canvas.Visibility = Visibility.Collapsed;
        inkCanvas.Visibility = Visibility.Visible;
    }
}
  1. 在切换时,你可以根据需要保存或加载InkCanvas的绘图数据。
代码语言:txt
复制
private void SwitchButton_Click(object sender, RoutedEventArgs e)
{
    if (inkCanvas.Visibility == Visibility.Visible)
    {
        // 保存InkCanvas的绘图数据
        var inkData = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
        // 切换到Canvas
        inkCanvas.Visibility = Visibility.Collapsed;
        canvas.Visibility = Visibility.Visible;
        // 在Canvas中加载绘图数据
        foreach (var stroke in inkData)
        {
            // 将stroke添加到canvas中
            canvas.Children.Add(stroke);
        }
    }
    else
    {
        // 在Canvas中保存绘图数据
        var inkData = new List<InkStroke>();
        foreach (var child in canvas.Children)
        {
            if (child is InkStroke stroke)
            {
                inkData.Add(stroke);
            }
        }
        // 清空Canvas
        canvas.Children.Clear();
        // 切换到InkCanvas
        canvas.Visibility = Visibility.Collapsed;
        inkCanvas.Visibility = Visibility.Visible;
        // 在InkCanvas中加载绘图数据
        inkCanvas.InkPresenter.StrokeContainer.AddStrokes(inkData);
    }
}

这样,你就可以通过点击一个按钮或其他交互方式,在InkCanvas和Canvas之间进行切换。在切换时,你可以根据需要保存或加载绘图数据。请注意,这只是一个简单的示例,你可以根据实际需求进行修改和扩展。

关于UWP开发和InkCanvas的更多信息,你可以参考腾讯云的官方文档:

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

相关·内容

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

本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 笔迹性能比在 WPF 高很多。...通过测试使用 Pointer InkCanvas 性能相差在我设备是 16 ms 左右,需要知道,笔迹书写过程,相差 16 ms 是一个很大值。...如果 InkCanvas 只是更快收到触摸消息,那么也无法做到像现在这么快速度。尝试写一个空白 UWP 程序,在里面添加笔迹控件,在移动过程,进入断点,这时你还可以继续在 UWP 应用上画。...也就是 InkCanvas 书写 UWP 主线程是分开UWP 笔迹渲染是分为三个过程,第一个过程是跟随,也就是将当前上一个点直接连出一条线。...而从湿到干就是动态转静态笔迹。将笔迹转为静态就可以让笔迹变为一个界面元素,参与界面的变化,选择层级这些业务。

1K20

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

包括在书写过程中切换模式,进行手势擦除切换为橡皮擦模式 本文提供方法适合用来做复杂自定义,本文方法优点也是缺点。优点是啥都可以自己控制,缺点是啥都需要自己控制。...需要自己处理笔迹多笔同步问题,处理笔迹长笔迹分段问题,处理笔迹绘制问题,处理动态笔迹切换 本文提供方法依然可以实现非常高性能笔迹,比 WPF 最快笔迹实现还要快,但需要自己处理好各个部分逻辑...,动态笔迹和静态笔迹,笔迹分段等逻辑。...本文提供方法性能依然不如只使用默认 InkCanvas 快 界面 在开始之前,请先安装 Win2d 库,可参阅 win10 uwp win2d 入门 看这一篇就够了 博客了解如何安装 在 XAML... PointerMoved 事件,事实上需要监听更多事件用来了解笔迹绘制开始完成逻辑。

43020

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

本文来告诉大家如何在 WPF 应用 HOST 了 UWP InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能实现方法 在上一篇博客有告诉大家如何在 WPF 里面使用上...包,请参阅 WPF 引用 UWP 控件 不打包为 MSIX 分发方法 在开始之前,需要了解UWP InkCanvas 控件是没有背景色这个属性,也就是说 UWP InkCanvas 控件需要依靠外层容器或者背后元素给颜色作为背景色...UWP 控件挡住 因此为了给 UWP InkCanvas 控件加上背景色,就需要采用在 WPF 里面 HOST 自定义 UWP 控件科技。...让 UWP 控件项目作为实际 UWP 自定义控件编写项目,咱将在 UWP 控件项目里面完成所有的自定义逻辑 如何创建项目如何组织,还请参阅 官方文档 本文这里就不多说了 回到如何给 UWP ...InkCanvas 控件添加背景色方法上,在新建 UWP 控件项目里面,添加一个自定义控件, CustomInkControl.xaml 控件 在这个控件里面的 XAML 添加如下代码 <UserControl

2.2K20

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

现在很多人还是使用笔纸来记录,那么可以在电脑输入方式之前使用方式一样,很多用户觉得会方便。在win10 我们有一个简单方法去让用户输入,InkCanvas。...现在edge,OneNote这些都有使用InkCanvas,我们可以在我们手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写保存图片,可以识别文字。...-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软InkCanvas ,这个控件可以手写,需要我们在页面使用他: <InkCanvas x:Name="ink_canvas...下面的不是我写,是垃圾微软。 InkPresenter可以获取 InkCanvas 基础对象,可以设置输入为笔,触摸,鼠标,上面那个是从微软拿来,因为我是在用电脑。...如果我们需要输入笔鼠标 ink_canvas.InkPresenter.InputDeviceTypes= CoreInputDeviceTypes.Mouse|CoreInputDeviceTypes.Pen

1.4K10

何在Anacondapython系统自带python之间切换

我们知道,Ubantu系统会自带python,当你在terminal窗口中输入python,就会显示默认安装python信息。...比如我16.04就自带了python2.73.5,但是安装了Anaconda之后,再输入python就变成了Anaconda带了: ? 那么如何切换回系统自带python呢? 如图所示: ?...我指定目录 /usr/bin/下pythonpython3就是系统自带 也就是输入 /usr/bin/python 或者是 /usr/bin/python3 让我们来分析一下这是个什么原理:当你输入...红线环境变量是我在安装Anaconda时添加,后添加环境变量顺序排在前面,所以系统搜寻python这个命令时首先去红线那个路径寻找,然后的确就找到了嘛,就是调用Anacondapython咯。...而之前我没有安装Anaconda,就没有红色那个环境变量,就会去后面每个路径里面找,然后由于系统自带python是安装在路径/usr/bin/下,也就是黄线位置,就能在那里面找到咯。

3.8K10

win10 uwp 使用油墨输入

现在很多人还是使用笔纸来记录,那么可以在电脑输入方式之前使用方式一样,很多用户觉得会方便。在win10 我们有一个简单方法去让用户输入,InkCanvas。...现在edge,OneNote这些都有使用InkCanvas,我们可以在我们手机上手写,我们也可以在我们电脑上用鼠标写,然后我们可以把我们写保存图片,可以识别文字。...-10-by-10/ 一些内容是参见陈染大神 做法简单,我们有垃圾微软InkCanvas ,这个控件可以手写,需要我们在页面使用他: <InkCanvas x:Name="ink_canvas...下面的不是我写,是垃圾微软。 InkPresenter可以获取 InkCanvas 基础对象,可以设置输入为笔,触摸,鼠标,上面那个是从微软拿来,因为我是在用电脑。...= CoreInputDeviceTypes.Mouse; } 如果我们需要输入笔鼠标 ink_canvas.InkPresenter.InputDeviceTypes= CoreInputDeviceTypes.Mouse

43110

WPF 实现自定义笔迹橡皮擦

阅读本文,你将了解如何自定义橡皮擦,自定义橡皮擦外观样式,了解如何不依赖 InkCanvas实现笔迹擦除 原本我是想采用 WPF 最简逻辑实现多指顺滑笔迹书写 方式来做笔迹绘制部分,但是考虑使用上面博客方法将会让大家需要多了解很多触摸相关知识...以下只是将 InkCanvas 作为笔迹绘制,而橡皮擦部分是咱定制 在 XAML 添加一个 InkCanvas 代码很简单,请看代码 <InkCanvas x:Name="InkCanvas...因为这个 Canvas 容器在 InkCanvas 上方,因此自定义橡皮擦界面也将会在 InkCanvas 上 在界面里面放一个 Canvas 一个用 Rectangle 表示自定义外观橡皮擦...我就怕你抄代码时候,用容器控件默认不是在左上角 在上面代码,咱默认 EraserCanvas 是不可见,而且背景色是透明。...如果你需要支持自定义形状橡皮擦,三角形等,就需要自己用更底层方式去实现了,也不在本文范围之内 在获取到 IncrementalStrokeHitTester 工具之后,需要监听他 StrokeHit

89220

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

UWP InkCanvas 里自带了预测书写轨迹功能,开启此功能可以进行书写预测,从而减少书写延迟。...本文将告诉大家如何在 UWP InkCanvas 里开启笔迹书写预测功 在 UWP InkCanvas 里开启笔迹书写预测功能只需要设置 InkModelerAttributes PredictionTime...印象在 10240 文档里面,是有一个使用 Inertia 惯性预测算法笔迹书写预测,但是我现在还没找到文档 设置 InkModelerAttributes PredictionTime 属性需要先获取到...这个技术在许多 UWP 应用上,例如 OneNote UWP 等都是默认开启 但是毕竟是预测,肯定存在纠错时候,这时将会发现笔迹笔尖抖动。...也就是开启笔迹预测功能,能够降低延迟,但是可能在预测实际触摸点不符合时笔尖会变更 详细请参阅 InkModelerAttributes.PredictionTime - Windows UWP applications

77120

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

本篇作为技术分享系列第四篇,详细讲一下手绘视频 Surface Pen Surface Dial 使用场景。 ...,比如切换颜色、粗细、放大缩小画布等,另外 Dial 会默认附加一些系统级别的快捷功能,音量调节,界面滚动等。...对 Surface Pen Surface Dial 有一个初步认识后,我们就开始正式讲一下它们在 UWP 手绘视频创作工具应用。...定义了这些属性后,在 InkCanvas 书写时,笔尖结合方向,决定了不同方向笔画形状不同粗细,笔尖填充,决定了在反复涂画时,是否有颜色加深处理。 ?...Ink Dial 介绍就到这里,我们更多介绍它应用场景,具体实现代码大家可以去微软官方查看文档,实现过程相对简单,不做赘述了,谢谢!

1K120

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

Ink 手绘     Ink 手绘在手绘视频中有很多应用场景,绘图手绘,手写文字手绘,有丰富笔触类型支持,铅笔墨粉效果,钢笔笔触方向粗细,荧光笔混色效果等动画展示。    ...,这些按钮可激活关联 InkCanvas 与墨迹相关功能。...Ink 结合手绘     Ink 手绘视频结合,主要有以下几种方式:利用 InkCanvas InkToolbar 实现 Ink 获取存储;自定义圆形菜单,实现 Ink 选择,设置绘制数据获取...而 Windows ML 可以实现模型本地化,可以把 Autodraw 训练模型集成在 UWP 应用,减少网络传输时间,降低服务器负载,本地实现计算过程。 7....,这些按钮可激活关联 InkCanvas 与墨迹相关功总结

1.2K30

Windows Community Toolkit 3.0 - InfiniteCanvas

这是一个非常实用控件,在“来画视频” UWP 应用绘画功能,也用到了这个控件,它对不同画笔选择,橡皮擦,直尺圆形尺,文字输入字体选择等都提供了很便捷支持,而且支持导入导出数据,可以很方便创作绘画作品...其中 InfiniteCanvas.cs 这个类主要是实现 OnApplyTemplate(),DependencyProperty 处理,控件定义,事件注册,Canvas 基础事件处理等,InfiniteCanvas...实现了一个 InkCanvas 所以可以实现各种笔触笔迹绘制; InfiniteCanvas.Events.cs 主要是 Canvas 各种按钮点击等事件处理; InfiniteCanvas.TextBox.cs...主要是 Canvas TextBox 控件对应控件定义事件处理; 调用示例 InfiniteCanvas 控件调用非常简单,下面看看 XAML 调用: <Page xmlns="http... <em>的</em>源代码<em>实现</em>过程讲解完成了,希望能对大家更好<em>的</em>理解<em>和</em>使用这个功能有所帮助。

54130

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

版本之间关系图如下,详细请看 Windows 10 version history - Wikipedia 接下来下载大佬训练好 mnist.onnx 模型文件,下载地址是 https://github.com.../microsoft/Windows-Machine-Learning/raw/master/Samples/MNIST/UWP/cs/Assets/mnist.onnx 我在本文末尾代码仓库里面也包含了此文件...byte 数组长度之间关系。...,大家可以了解如何在 WPF 应用里面,通过 WinRT 方式对接 WinML 层。...以及如何加载大佬们训练好 onnx 模型,如何执行模型 如果对此演示项目的代码感兴趣,可以通过下面方式获取到本文所有代码 本文代码放在github gitee 欢迎访问 可以通过如下方式获取本文以上源代码

43010

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

按照微软官方文档,大部分文档都会说如果用了 XAML Islands 等技术时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发使用。...但是实际上不打包也可以,此时可以此前 Win32 应用一样分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 控件,但是至少应用软件自身可以在 Win7 继续运行...可以通过判断系统版本决定功能是否开放,如是 Win10 版本,那么开放 UWP 控件部分使用 如果新建一个空 .NET Core 3.1 WPF 项目,然后只是安装了必要 NuGet 包之后,...就在 XAML 界面里面添加了 UWP 控件,笔迹控件。... InkCanvas 做高性能笔迹应用 WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls InkCanvas 时加上背景色按钮方法

71550

susudo之间区别以及如何在Linux配置sudo

在Linux实现安全性一种方式是用户管理策略,用户权限普通用户无权执行任何系统操作。 如果普通用户需要执行任何系统更改,则需要使用' su '或' sudo '命令。...注 - 本文更适用于基于Ubuntu发行版,但也适用于大多数流行Linux发行版。...为了实现上述情况,我们可以将'sudo'写为: mark beta.database_server.com=(cat) dog Q4。如果用户需要被授予几个命令会怎么样?...如果用户应该运行命令数量在10以下,我们可以将所有命令放在一起,它们之间有空格,如下所示: mark beta.database_server.com=(cat) /usr/bin/command1...如何在不输入密码情况下执行' sudo '命令? 我们可以通过使用' NOPASSWD '标志来输入' sudo '命令而不用输入密码。

2K60

UWP 手绘视频创作工具技术分享系列

实现了旧版 “来画” 所有工具功能基础上,我们实现了更多 Ink 画笔 Dial 功能,更好 SVG 解析绘制,更好文字绘制过程,视频 gif 图插入等等。...Runtime App , 编程语言可以是 C++、C# 或 VB,相信在 UWP 尝试过图形渲染绘制同学们,对 Win2D 都不会陌生,毕竟我我软推荐实现方式。...微软 Windows SDK 里提供了很棒 InkToolbar InkCanvas,可以默认支持几种画笔展现,圆珠笔、钢笔、铅笔、荧光笔等。...下面是 InkToolbar InkCanvas 一张示意图应用中使用 Surface Dial 操作图(来自 IT之家报道): ? ? 6....今天文章先概括介绍一下每个部分实现原理,后面会陆续对每一个部分做详细讲解,尤其是 SVG 文字绘制方面,详细原理实现,以及开发过程遇到各种问题,或自己,或微软系统

1.2K110

WPFCanvasInkCanvas

前言 WPF绘图有两种方式CanvasInkCanvas Canvas需要完全由自己实现InkCanvas已经默认为我们实现了基本绘制,同时效果也比较好。...InkCanvas 推荐使用InkCanvas,使用它绘制线时候会自动优化转折地方,会变得平滑。 InkCanvas本身已经支持使用鼠标或者触屏来画线,下面的示例是使用代码进行画线。...Strokes集合 BlackboardCanvas.Strokes.Add(stroke); } 我们也可以在Stroke添加新点 stroke.StylusPoints.Add(new...事件无法正常工作,因为它是由InkCanvas处理,并且没有被冒泡。...推荐 建议使用使用AddHandler,因为PreviewMouseUp实际是在事件执行之前触发,本来我们要在这个事件要保存已绘制笔迹,但是实际上会少了最后一笔,因为最后一笔绘制还没执行。

1K20

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

在使用 InkCanvas 过程,无法直接通过 Pointer 消息拿到书写移动,需要使用 StrokeInput 才能获取到 在 InkCanvas.InkPresenter.StrokeInput...作为例子,先在 XAML 界面放一个 InkCanvas 控件,同时修改他属性名是 InkCanvas 在后台代码可以这样写 InkCanvas.InkPresenter.StrokeInput.StrokeContinued...1607 提供了 CoreWetStrokeUpdateSource 可以在湿笔迹时候触发事件 在 CoreWetStrokeUpdateSource 同样提供了开始书写和书写过程事件 先通过...StrokeContinued 更高 另外推荐开放是 StrokeContinued 事件,因为在使用 UWP 笔迹就是为了做高性能笔,在 WetStrokeContinuing 事件里面如果添加了业务代码...,那么将会影响笔迹书写速度 在 UWP 笔迹书写过程,需要等待 WetStrokeContinuing 事件完成之后才能进行笔迹渲染,而调用 StrokeContinued 事件是在笔迹书写完成之后调用同时不对这个事件做任何等待

56330

在Android应用实现跳转计数模式切换按钮

问题描述 在程序应用,我尝试引入了两个新功能:连续点击跳转UI切换按钮名称模块显示。...用户在使用过程遇到了以下问题: 连续点击跳转UI问题:首次连续点击八次能成功跳转UI,但在第二次尝试时无法跳转。 按钮创建问题:应用在每次操作时创建两个按钮,这种方法在视觉上性能上都不够高效率。...取模运算确保了计数器在达到设定次数后自动归零,还可以无限次重复点击八次操作。 实现效果:用户现在可以无限次地通过连续点击八次来触发UI跳转。...第二个问题解决方案:控制按钮可见性 为了解决按钮创建问题,在同一个活动控制两个按钮可见性,而不是重复创建按钮: 用户可以通过点击“切换升级模式”按钮进入"升级模式"。...结论 通过上述解决方案,解决了用户在操作上不便,提升了应用整体性能,还可以优化UI便捷性。 谢谢大家阅读: )

23840

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

x:Name="InkCanvas"> 在后台代码里面,实现事件,以下代码很简单,相信大家一看就明白 public partial class MainWindow...这里需要说明是 UNO WPF 之间关系不是重复存在,而是相互引用关系,如下图可以看到 UNO 可以处于 WPF 上层,换句话说就是使用 UNO 框架时可以将 WPF 当成底层,从这个方面来说...,最后构建输出也依然是一个 WPF 应用 新建一个 UNO 项目,在 MainPage.xaml 里面监听事件,制作一些准备辅助笔迹绘制界面逻辑,简单代码如下 <Canvas x:Name="InkCanvas...在不断落点输入点数据过程,将不断执行 Polygon Points 清理重新添加,于是就可以不断跟随落点更新笔迹内容,完成笔迹书写功能 private void DrawStroke...更多亮点 除了以上介绍大步骤上差异之外,阅读了大佬论文专利之后,我还发现了大佬算法更多亮点部分 比如优化曲线分裂算法,在进行笔迹算法过程,对性能是敏感,于是大佬提出了利用弧弦比用来代替弦括面积

42410
领券