Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WPF 手绘对称图形控件

WPF 手绘对称图形控件

作者头像
林德熙
发布于 2020-10-29 03:12:22
发布于 2020-10-29 03:12:22
95400
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

本文来安利大家一个我刚做的控件,这个控件支持触摸下多指进行笔迹绘制,绘制过程中将会对称显示出水平和垂直翻转的笔迹。可以用来绘制对称图形。当然了,本文还会告诉大家这个控件是如何制作的

啥都不用说,先来一张图

我将这个控件在GitHub上完全开源,代码放在 https://github.com/lindexi/uwp

虽然这是放在 UWP 仓库的控件,但现在只支持 WPF 框架

下面来告诉大家如何使用这个控件

在 dotnet 里面的使用控件的套路都是第一步安装 NuGet 第二步引用命名空间,第三步使用控件

安装 NuGet 库

在 NuGet 控制台输入下面命令就可以安装这个库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Install-Package Lindexi.Control.WPFFlipDrawingCanvas -Version 1.0.0

如果是 SDK 风格的 csproj 文件格式,可以在此文件添加下面代码安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <ItemGroup>
        <PackageReference Include="Lindexi.Control.WPFFlipDrawingCanvas" Version="1.0.0" />
    </ItemGroup>

使用控件

先在 XAML 中添加下面代码,添加命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        xmlns:wpfFlipDrawingCanvas="clr-namespace:Lindexi.Control.WPFFlipDrawingCanvas;assembly=WPFFlipDrawingCanvas"

接着就可以使用这个控件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            <wpfFlipDrawingCanvas:FlipDrawingCanvas x:Name="FlipDrawingCanvas"></wpfFlipDrawingCanvas:FlipDrawingCanvas>

现在尝试运行代码就可以看到界面上有一个可以手绘的控件

本文代码放在 github 欢迎小伙伴访问

制作方法

那么这个控件是如何制作的,在 WPF 里面如何进行多指的书写?在 WPF 中如何让控件进行水平和垂直的翻转? 了解了这两个问题,就可以很简单制作这个控件

我有一篇博客,告诉大家如何在 WPF 中使用简单的代码制作一个支持多指笔迹的控件,请看 WPF 最简逻辑实现多指顺滑的笔迹书写

在 WPF 中实现翻转特别简单,只需要让缩放作为负数就可以了,如下面代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Button Content="欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客" Padding="5">
  <Button.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </Button.RenderTransform>
</Button>

详细请看 How to: Flip a UIElement Horizontally or Vertically - WPF .NET Framework

我这个控件很简单,因此去安装一个 NuGet 有点坑,所以我更推荐你去抄抄我的代码哈

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
dotnet 读 WPF 源代码笔记 Stroke 类可能存在的内存泄露
在 WPF 中,使用 Stroke 类时,可能会出现内存泄露,原因是 DrawingAttributes 的事件被监听没有释放。本文将从源代码的角度告诉大家这个内存泄露问题和如何解决
林德熙
2021/02/02
5360
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用
本文告诉大家如何在 WPF 中应用上 UWP 的笔迹控件,从而实现性能超级高的笔迹应用的方法
林德熙
2021/12/23
1.3K0
WPF 笔迹算法 从点集转笔迹轮廓
本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是 WPF 的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的 UI 框架上,包括 UWP 或 WinUI 或 UNO 或 MAUI 或 Eto 等框架
林德熙
2023/11/28
5780
WPF 笔迹算法 从点集转笔迹轮廓
WPF 简易手绘笔迹支持回放的方法
手绘笔迹实际上就是需要支持回放的,手绘笔迹指的是在应用程序里面支持回放出手绘出来的笔迹。本文来告诉大家一个简易的方法
林德熙
2022/08/12
4800
WPF 简易手绘笔迹支持回放的方法
WPF 使用 Composition API 做高性能渲染
在 WPF 中很多小伙伴都会遇到渲染性能的问题,虽然 WPF 的渲染可以甩浏览器渲染几条街,但是还是支持不了游戏级的渲染。在 WPF 使用的 DX 只是优化等级为 9 和 DX 9 差不多的性能,微软在很多开发者的提议开放了现代渲染方法 Composition API 这是 UI 应用的里程碑的技术
林德熙
2019/04/22
2.1K2
WPF 使用 Composition API 做高性能渲染
win10 uwp 通过 win2d 画出笔迹 界面笔迹性能原理完全控制墨迹多指输入转换笔迹无限漫游
本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 的笔迹的性能比在 WPF 高很多。但是如果只是使用默认的 InkCanvas 可以做的很少,同时性能也不是特别高,在加上 win2d 才可以做到和来画一样快的性能
林德熙
2019/03/13
1.1K0
WPF 实现自定义的笔迹橡皮擦
在 WPF 里面,对于笔迹来说,应该放在 Stroke 类里面,而不是作为点的集合存储。在 Stroke 类里面将作为管理笔迹的类提供笔迹的渲染和橡皮擦等功能。咱下面将从 Stroke 类开始,自己定义笔迹橡皮擦。阅读本文,你将了解如何自定义橡皮擦,如自定义橡皮擦的外观样式,了解如何不依赖 InkCanvas 来实现笔迹的擦除
林德熙
2021/03/16
1K0
WPF 笔迹触摸点收集工具
实现方式其实就在触摸的时候收集触摸点信息,上面的工具有很多功能都没有实现的。笔迹绘制的功能使用 WPF 最简逻辑实现多指顺滑的笔迹书写 博客的方法实现
林德熙
2022/08/12
2990
WPF 笔迹触摸点收集工具
WPF 最简逻辑实现多指顺滑的笔迹书写
只需不到 150 行代码就能实现一个支持多指顺滑的笔迹书写的应用。当然,这个应用除了笔迹书写外,没有其他任何功能。本文将不会使用 InkCanvas 而是使用更底的方法,通过 Stroke 进行绘制
林德熙
2020/08/24
8150
WPF 使用 Edge 浏览器
本文告诉大家如何使用 Windows Community Toolkit 的新控件,在 WPF 使用 Edge 浏览器
林德熙
2018/09/19
2.5K0
WPF 使用 Edge 浏览器
Roslyn 使用 Directory.Build.props 管理多个项目配置
在一些大项目需要很多独立的仓库来做,每个仓库之间都会有很多相同的配置,本文告诉大家如何通过 Directory.Build.props 管理多个项目配置
林德熙
2019/03/13
6630
Roslyn 使用 Directory.Build.props 管理多个项目配置
WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移
本文记录 WPF 触摸的一个已知问题,仅在开启 WM_Pointer 消息之后,将应用程序运行在包含多个屏幕的带触摸屏的设备上,如此时在非主屏幕的触摸屏上进行触摸,使用 GetStylusPoint 或 GetIntermediateTouchPoints 方法获取触摸点时,将会发现所获取的触摸点的坐标是偏的,偏的坐标差值刚好是整个屏幕距离
林德熙
2023/12/10
3542
WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移
高性能笔迹原理
假定是需要做触摸屏的笔迹,那么触摸屏和屏幕是独立的硬件,而处理数据的主机又是独立的硬件
林德熙
2020/08/06
9030
win10 uwp 自定义控件入门
本文告诉大家如何在 UWP 使用 CustomControl 自定义控件,在 UWP 的自定义控件的中文翻译是模板化控件,通过自定义控件可以完全控制整个控件的布局和渲染。
林德熙
2022/08/12
9680
WPF 尝试使用 WinML 做一个简单的手写数字识别应用
最近我看了微软的 AI 训练营之后,似乎有点了解 Windows Machine Learning 和 DirectML 的概念,于是我尝试实践一下,用 WPF 写一个简单的触摸手写输入的画板,再使用大佬训练好的 mnist.onnx 模型,对接 WinML 实现一个简单的手写数字识别应用
林德熙
2023/12/11
5700
WPF 尝试使用 WinML 做一个简单的手写数字识别应用
dotnet WinUI3 Win2D 翻转图片
本文将告诉大家如何在 WinUI3 里面使用 Win2D 进行图片的翻转,本文的方法也适用于 UWP 框架
林德熙
2024/07/08
2310
WPF 使用 Skia 解析绘制 SVG 图片
本文告诉大家如何在 WPF 里面,使用 Skia 解析绘制 SVG 图片。本文也适合控制台使用 SkiaSharp 解析绘制 SVG 图片,本文的 WPF 部分只是在 Skia 绘制完成之后,将 Skia 的内容绘制到 WPF 的 WriteableBitmap 图片,从而在界面显示
林德熙
2023/04/07
1.9K0
WPF 使用 Skia 解析绘制 SVG 图片
Windows Community Toolkit 3.0 新功能
本文告诉大家一个令人震惊的消息,Windows Community Toolkit 有一个大更新,现在的版本是 3.0 。最大的提升就是 WinForm 和 WPF 程序可以使用部分 UWP 控件。
林德熙
2018/09/19
1.6K0
Windows Community Toolkit 3.0 新功能
WPF 引用 UWP 控件 不打包为 MSIX 分发的方法
按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用。但是实际上不打包也可以,此时可以和此前的 Win32 应用一样的分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 的控件,但是至少应用软件自身可以在 Win7 继续运行的。可以通过判断系统版本决定功能是否开放,如是 Win10 版本,那么开放 UWP 控件部分的使用
林德熙
2021/12/23
8300
SourceYard 制作源代码包 控制台项目WPF 程序调试
本文带大家走进SourceYard开发之旅 在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合。因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现各个模块耦合的代码很多。但是对一个项目的拆分会让拆分出来的每一个项目都编译出一个 dll 增加运行文件的启动时间。 在开发中,常常会用到很多工具类,这些小轮子很多的功能基本就只有一个类,如何对这些小轮子进行管理?通过复制代码还是通过 Nuget 管理?
林德熙
2019/03/13
1.2K0
SourceYard 制作源代码包
            控制台项目WPF 程序调试
推荐阅读
相关推荐
dotnet 读 WPF 源代码笔记 Stroke 类可能存在的内存泄露
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验