- 博客(2029)
- 资源 (174)
- 问答 (1)
- 收藏
- 关注
原创 白板类应用的模式交互设计方案
在一个白板类应用的交互中一定会涉及到模式之间的更换和交互冲突。白板类软件的交互模式一般包含了笔迹书写模式,选择模式,擦除笔迹模式等。多个模式之间存在切换,而切换可以发生在某个模式执行过程,如需要在白板软件里面支持笔迹书写功能,在书写的过程打断进入笔迹的擦除模式。本文告诉大家我所在团队的白板内核的模式交互设计方案,本文不会涉及到具体实现的逻辑代码我从 2017 开始到现在都在做白板软件,我对整...
2020-05-20 01:33:33 923 20
原创 WPF 基于 Azure 的认知服务 情绪分析 语言检测 关键短语提取
本文主要是来安利大家基于 Azure 的认知服务,主要是文本认知服务,可以做到分析输入文本的情绪,以及判断当前输入文本所属语言等功能本文分为两个部分 ,一个就是在 Azure 上的配置,另一个就是 WPF 端的使用在 Azure 上我用的是 世纪互联 的一块钱订阅,可以用一块钱订阅一个月的试用,这就是为什么我这几天都会写 Azure 相关博客的原因登录 Azure 控制台,新建一个 认知...
2020-05-19 02:10:22 583
原创 分形和图论网络
其实这是一个古老的话题,我用10分钟和你讲一段古老的故事。本文没有公式也没有前置的知识,只是一个有趣的故事。读这个故事能够消耗你几分钟,听着玩就可以,千万不要思考很久之前,有一群数学家想出了图论的概念,啥是图论呢,他和网络有什么关系呢?其实这里用到的仅仅只是图论里面的一丁点东西,最简单的图可能不是多媒体视频图片的图了,而是指一些点和一些线连接的东西。在图论里面的图指的是有一些点,这些点之间...
2020-05-18 02:52:04 1014 1
原创 WPF dotnet core 的 Blend SDK Behaviors 库
之前版本是通过安装 Blend SDK 支持 Behaviors 库的,但是这个方法都是通过引用 dll 的方式,不够优雅。在升级到 dotnet core 3.0 的时候就需要使用 WPF 官方团队开源的 Microsoft.Xaml.Behaviors.Wpf 库代替先通过 NuGet 安装 Microsoft.Xaml.Behaviors.Wpf 库或者在 csproj 添加下面代码...
2020-05-17 11:25:45 662
原创 git 统计两个 commit 之间相差的次数
本文告诉大家在一个连续的 commit 树中统计两个 commit 之间的差异的 commit 数量,也就是存在 A commit 存在而 B commit 不存在的 commit 的数量可以使用下面代码统计两个 commit 或分支之间的差异的次数git log --oneline A ^B | 这里的 A 和 B 可以替换为分支或 commit 号,如 origin/dev 等,下面...
2020-05-17 06:18:40 2493
原创 C# dotnet 获取某个字符所在 Unicode 字符平面映射
在 dotnet 里面可以通过安装 System.Text.Encodings.Web 库拿到 UnicodeRanges 这个包含了 Unicode 标准的平面映射。但是我还没有找到如何判断一个字符是落在哪个平面的逻辑,本文就告诉大家一个可以使用的方法,这个方法同时稍微兼顾了性能在 System.Text.Encodings.Web 的 UnicodeRanges 其实是根据标准生成的代码...
2020-05-14 08:50:58 637
原创 Azure 函数服务部署失败 因为函数应用设置 v3 但主机是 v2 版本
在使用 Azure Function 函数服务的时候,将代码推送到函数服务器的时候提示 Your function app is targeting v3, but Azure host has function version 2 此时是因为在 Azure 的主机设置的版本落后函数的代码版本在日志例如可以看到下面代码Your function app is targeting v3, b...
2020-05-14 07:22:13 471
原创 dotnet 使用 OpenXML SDK 解析 Office 的项目符号 buNone 含义
在解析 PPT 文档的时候,文本是比较复杂的一部分,而因为很多有趣的坑,即使是微软大法也有一些诡异的设计,例如项目符号的是否显示在阅读本文之前,我期望小伙伴是了解基础的解析 Office 的方法。在使用 OpenXML SDK 解析的时候,只需要开发 10 分钟就完成了整个 PPT 的解析了,剩下就是如何使用解析完成的数据。入门的文档请看 C# dotnet 使用 OpenXml 解析 P...
2020-05-12 02:23:40 665
原创 SublimeText 配置跳转回上个光标坐标
在 VisualStudio 可以通过 ctrl+- 的功能,跳转到上个光标所在的坐标。如在多个方法之间跳转,可以通过这个快捷键快速实现。在 SublimeText 可以在菜单的 Goto 里面找到 Jump Back 功能,这个功能就是对应 VisualStudio 的跳转回上个光标的功能,也就是向后定位功能对应的 SublimeText 的快捷键是 alt+- 和 VS 不相同,可以在 ...
2020-05-11 07:58:52 1884
原创 C# dotnet 使用 TaskCompletionSource 实现暂停功能
在 C# 里面,可以使用 dotnet 的 TaskCompletionSource 方法自己实现一个异步任务,这个任务可以方便设置任务是否完成等做到让等待的过程继续或等待。根据这个功能可以解决在复杂的功能里面通过异步等待的方法实现暂停。做法就是等待一个异步任务,如果这个功能处于暂停,那么只需要让这个异步任务不结束,此时整个功能就会在等待,直到设置了异步任务完成用异步等待的方式实现暂停有什...
2020-05-08 07:15:37 940
原创 dotnet C# 图片等比限制最大和最小大小缩放算法
本文只是告诉大家如何计算缩放之后的宽度和高度,不包含实际的图片缩放方法如下图,我要将图片的大小进行等比缩放,此时我要求图片的宽度和高度大于最小尺寸,但是要求宽度和高度都不大于最大尺寸,如果这两个规则冲突,优先满足不大于最大尺寸按照规则可以看到,如下图,图片的宽度等于最大宽度了,此时虽然图片的高度小于最小高度,但是也不应该对图片进行缩放为什么需要有最大限制?原因是等比缩放对于长图计...
2020-05-07 16:02:55 1071
原创 使用 C# 写脚本的优势和方法
现在很方便就可以将 C# 作为某个脚本使用,本文这里的脚本指的是直接执行源代码的方式。现在是 2020 现在的 C# 默认在 dotnet 的支持下,可以作为脚本使用,本文将告诉大家使用 C# 写脚本的优势和方法优势优势如下:基于 dotnet 的 C# 有整个 dotnet 的基础库和通过 NuGet 带来的海量的第三方库,有超级多的功能都有大佬实现过。使用 C# 写脚本可以通过大量...
2020-05-07 02:55:28 8997
原创 Windows 对全屏应用的优化
全屏应用对应的是窗口模式应用,全屏应用指的是整个屏幕都是被咱一个应用独占了,屏幕上没有显示其他的应用,此时的应用就叫全屏应用。如希沃白板这个程序。本文主要告诉大家从微软官方的文档以及考古了解到的 Windows 对全屏应用的优化,以及是如何进行的优化,方便小伙伴在撕的时候可以找到根据当然,很多小伙伴只是需要依据,所以我就先贴出一篇特别好的官方文档,当然本文大部分内容都是从这篇文档抄的解密...
2020-05-04 03:23:10 3009
原创 使用 .NET Core 在 MAC 下提供 Excel 的 Power Query 功能
什么是 Power Query 功能?这是一个数据连接技术,可以用来发现、连接、合并、提炼数据用来满足数据处理需要。这个技术已经开发了很多年了,主要是提供给 Excel 和 PowerBI 桌面版使用。这个技术现在是作为 Windows 下的应用功能,通过 C# 托管在 .NET Framework 的功能。本文主要告诉大家在 .NET Core 2.1 发布之后,可以使用 .NET Core 跨...
2020-05-04 03:23:10 1457
原创 Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式
我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客简单说这个 WS_EX_NOREDIRECTIONBITMAP 样式是 Win8 提供的,用来做画面图层混合的功能。什么是画面图层混合功能?详细请看为何使用 DirectComposition玩法就是系统给你一个绘制表面,你在这个绘制表面上进行绘制,然后 DWM (桌面管理器 DWM Desktop Window ...
2020-05-02 16:02:31 1430
原创 GitHub Action 新上线 WPF .NET Core 自动构建模板
在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元测试和打包,同时输出打包的文件首先需要创建一个 WPF 项目,最简单的创建方法就是通过下面一句命令行dotnet new wpf -o Foo此时就创建了一个叫 Foo 的 WPF 项目了,...
2020-05-02 01:15:39 610
原创 GitHub 如何过滤某个作者的 MR 内容
在 WPF 开源仓库里面有大量的机器人的 MR 但是我想要了解现在 WPF 仓库有多少开发者在贡献代码,此时如何在 GitHub 中过滤某个作者的 MR 内容在 GitHub 的 Filters 可以通过 -author 表示去掉某个作者的内容,如下面链接就是去掉机器人的 WPF 仓库的 MR 有哪些 https://github.com/dotnet/wpf/pulls?q=is%3Apr...
2020-05-01 00:55:43 937
原创 为何 WPF 对 vcruntime140 有引用
通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因在独立发布的时候,可以在仓库里面找到 vcruntime140.dll 这个文件这是因为 WPF 框架用到了两个使用 C++\CLI 的项目,分别是 DirectWriteForwarder.dll 和 System.Printing.dll 库这两个库在进行发布的...
2020-04-30 01:20:27 427 2
原创 用 C# 写脚本 如何输出文件夹内所有文件名
大部分在 Windows 下的脚本都是使用 bat 或 cmd 写的,这部分的脚本对我来说可读性不好。这个可读性也是很主观的,对我来说用 C# 写脚本的可读性很强,但是换个小伙伴就不是了。在 .NET Core 下的 C# 可以通过 dotnet run 运行代码起来,此时特别适合用来写脚本我需要输出一个文件夹里面的根目录的所有文件,输出一个文件夹的顶层文件的方法可以使用 Directory...
2020-04-29 01:55:26 663
原创 Office OpenXml SDK 文本段落允许标点溢出边界属性
在进行 PPT 解析的时候,因为 PPT 是支持在文本框里面的文本段落设置允许标点溢出边界可以在符号超过了文本框的长度,不会换行,而是显示在文本框之外在 PPT 里面可以在段落设置允许标点溢出边界请看下面在段落属性里面,如下面代码<a:ppr fontalgn="auto" hangingpunct="0">通过 hangingpunct...
2020-04-28 00:14:26 986
原创 手把手教你构建 WPF 框架的私有版本
在上一篇博客告诉了大家如何让 GitHub 的 Action 协助咱构建 WPF 官方源代码,但是上一篇博客只是构建成功而已,构建的输出内容还是拿不到。本文将告诉大家如何让 WPF 框架的源代码构建之后输出到私有的 NuGet 源上,方便构建出私有分支版本在上一篇博客 手把手教你如何构建 WPF 官方开源框架源代码 告诉大家为什么我推荐使用 GitHub 的 Action 进行构建,尽管进行...
2020-04-27 00:44:15 625
原创 手把手教你如何构建 WPF 官方开源框架源代码
从去年微软就将 WPF 开源了,差不多现在所有 WPF 的源代码都开源了。在学习框架的时候,我会做一些改动,期望能构建一个自己的版本进行测试。但是作为一个特别大的框架,想要构建跑起来可不是直接在 VisualStudio 里面点击一下运行就完成了,需要做很多的准备才可以。本文将一步步教你如何构建 WPF 框架源代码我不敢说每个版本的 WPF 框架的源代码我都能构建,在官方仓库 https:...
2020-04-25 06:30:40 964
原创 dotnet 用 Microsoft.Diagnostics.Runtime 库写代码解析 DUMP 文件
在分析 DUMP 进行自动化调试的时候,很多时候只能通过 WinDbg 和命令行调用的方式,这样的方式很难做到灵活。同时编写各个命令行的难度也特别高,这在需要对命令行的输出进行不同的分支的判断时候,难度会更大。于是找到了 Microsoft.Diagnostics.Runtime 库,这个库提供了简单的方式,可以在 C# 里面用代码写分析 DUMP 的代码需要先在 NuGet 上添加一个...
2020-04-25 06:30:40 576
原创 Mobius 一个运行在 .NET Core 上的 .NET 运行时
一个 .NET 应用仅仅只是一块在 .NET 运行时上面运行的二进制代码。而 .NET 运行时只是一个能执行这项任务的程序。当前的 .NET Framework 和 .NET Core 运行时采用 C++ 编写,而 Mobius 是一个使用 C# 重写的 .NET 运行时,重写包括 JIT 编译和 GC 等,这些逻辑都将和 C++ 无关原文:Mobius – .NET runtime ru...
2020-04-23 01:15:28 657
原创 Roslyn 如何使用 MSBuild ZipDirectory 压缩文件夹
在 csproj 文件或在 NuGet 的 Targets 文件中可以通过 Target 调用 ZipDirectory 任务用来制作压缩包,在构建的时候,可以用这个方法将某个输出文件夹等内容压缩输出使用 ZipDirectory 有两个必要的属性,一个是 DestinationFile 表示输出的 zip 文件的路径,另一个是 SourceDirectory 表示将被压缩的文件夹路径如果...
2020-04-23 00:41:51 527
原创 WPF 如何在静态资源定义字体大小
默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀。但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换默认的单位是 Pixel 如下面代码写的 <TextBlock Margin="10,10,10,10" ...
2020-04-21 02:07:54 1070
原创 WPF 触摸底层 PenImc 是如何工作的
在 WPF 里面有其他软件完全比不上的超快速的触摸,这个触摸是通过 PenImc 获取的。现在 WPF 开源了,本文就带大家来阅读触摸底层的代码,阅读本文需要一点 C# 和 C++ 基础现在 WPF 开源,所有源代码都可以在官方代码找到,本文只是让大家能够更快的了解整个触摸的代码和更快的了解代码,和知道对应的功能在哪个代码在WPF的触摸的 PenThreadWorker 调用 Threa...
2020-04-20 00:45:56 469
原创 让 snoop 支持 .NET Core WPF 调试
在最新的 snoop 3.0.0-alpha0116 版支持了 .NET Core 的 WPF 的调试,只需要下载安装最新版本就可以可以到 github 的 Releases 下载最新版本如果网络太渣,可以到 csdn 下载如何使用请看 关于Snoop的用法_网络_muzizongheng的专栏-CSDN博客我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大...
2020-04-19 02:11:38 730
原创 VisualStudio 如何快速添加一个 Git Tag 推送
在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,可以新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器。配合推 Tag 打包 NuGet 的方法,将可以让整套工具用起来特别爽,完全本地化打 Tag 推送就完成了 NuGet 服务器打包推送进入团队管理界面,我用的英文版的,但是按钮在中文版也没有变化。我的 VisualStudio 是 ...
2020-04-19 02:11:38 2115
原创 GitHub 开源项目如何参与
点击上面图片跳转课件我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流本作品采用知识共享署名-非...
2020-04-17 00:51:52 442
原创 C# dotnet 的锁 SemaphoreSlim 和队列
本文主要是试验在顺序进入等待 SemaphoreSlim 的任务是否会按照顺序经过锁执行我在一个有趣的WPF程序里面,需要限制任务同时执行的线程数量,不然用户就会说用我的程序会让电脑卡渣。而我的任务是需要按照指定顺序执行的,我需要每次同时仅执行10个任务,同时任务执行按照传入的顺序此时可以用到 SemaphoreSlim 这个类,这个类的作用如下,给定初始的可以通过锁的数量,以及这个最大可...
2020-04-15 16:01:08 479
原创 WPF 动画实战 点击时显示圆圈淡出效果
本文告诉大家一个有趣的动画,在鼠标点击的时候,在点击所在的点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡的效果。本文的控件可以让大家将对应的容器放在自己应用里面就能实现这个效果这个效果特别简单,属于入门级的动画,代码也很少,请看效果本文的控件只是一个简单的 Canvas 控件,可以将本文的这个控件替换为你自己需要的控件。或者复制本文的代码,放在你自己的项目里面,只需要让你的项目里...
2020-04-15 00:27:01 704
原创 WPF 升级 .NET Core 的理由
本文列举一些让 WPF 升级 .NET Core 的理由提供更多的 API 同时提升运行性能为了支持 Win7 系统,限制了 .NET Framework 升级版本当前我团队的 .NET Framework 使用 4.5 但是如果使用 dotnet core 能使用更多的 API 同时这些 API 都优化了大部分性能启动性能优化在 dotnet core 2.2 提供的阶梯编译,可...
2020-04-14 01:44:34 2410
原创 dotnet 使用 Avalonia 开发 UOS 原生应用
最近很火的是国产的操作系统 UOS 系统,这个系统现在存在的问题就是生态没搭建起来。作为 dotnet 开发者,可以通过很多不同方向的技术为 UOS 系统生态贡献应用,如 Xamarin 和 GTK# 或 wine 和 win32 应用,或 mono 和 WinForms 应用等。本文将安利大家使用 Avalonia 框架开发 UOS 上的原生应用什么是 Abalonia 简单说法就是原 ...
2020-04-13 02:54:45 2072 2
原创 WPF 为何不要重写默认 string 字符串的 DataTemplate 数据模版
在 WPF 中可以通过 DataTemplate 给任意的类型重写这个类型在界面显示的数据模版,我想要让小伙伴的界面都有相同的样式,此时我就尝试重写字符串的数据模版,但是我就踩到了一个坑重写默认样式的时候需要小心,我更多是建议小伙伴写样式,然后通过 Style 获取静态资源,而不是重写默认样式。补充一下细节,什么是默认样式?在 WPF 中,如果没有给对应的资源一个 Key 的值,那么将会做到...
2020-04-13 02:54:45 541
原创 从 DX 层面讲 WPF 渲染卡顿
这不是一篇深入底层的博客,很多细节还请看 DX 底层相关小伙伴都知道 在 WPF 里面使用了 DX 作为底层的渲染,在说到 WPF 卡顿的时候,还请小伙伴不要忘记 dx 部分也是可能存在卡顿的在 WPF 的 OnRender 方法调用完成之后,会让 dx 做什么?此时的 WPF 将会完成完整帧的帧绘制命令的收集,此时也是 dx 的完整帧的帧绘制命令的完成。然后 dx 将会传递这些绘制命令...
2020-04-09 12:32:50 1994
原创 为何 C# 的指针不是可空类型
在 C# 里面的指针实际上使用 int32 或 int64 存储,在 C# 里面的指针需要开启不安全代码才能使用,这里的指针是一个结构体,而结构体是存在值的我尝试写出 byte*? foo 的时候,构建的时候 VS 提示下面代码// Error CS1519: Invalid token '?' in class, struct, or interface member ...
2020-04-09 12:18:38 608
原创 C# 为什么不建议对任意的 IEnumerable 反转
我想要反转一个枚举,但是代码审查没过,这是为什么在 C# 里面可以使用 IEnumerable 表示枚举值,而我提供了一个库给小伙伴用,这个库包含了这个方法,需要在某个不知道从哪里来的枚举值进行反转然后处理业务小伙伴说代码审查没过,原因是在他的设备上一运行就占用了 100G 的内存我写的代码也很简单 private static void Foo(IEnumerable...
2020-04-09 12:18:38 489
原创 Xamarin.Forms 选取文件 让用户选择本地文件
在 Xamarin 中,使用文件存储或打开某个特定文件都是很常用的做法,而在跨平台中,每个平台都有自己的 IO 的坑。如何在 Xamarin.Froms 里面让用户可以选择打开哪个本文文件,需要照顾多个不同的平台的文件访问方式在 Xamarin.Forms 右击管理 NuGet 程序包,搜寻 Xamarin.Plugin.FilePicker 进行安装,或在 csproj 上添加下面代码...
2020-04-09 12:18:38 1875 1
原创 dotnet 在 OpenXML SDK 的 HasValue 是什么含义
在 OpenXML SDK 里面对于很多值,如字符串等的值,都包含一个 HasValue 属性。刚入门的小伙伴会认为这就是一个和可空类型一样的属性,表示这个属性是不是为空。其实这句话只是对一半,其实这个属性表示的是在重新定义的字符串参数里面的属性是否为空在 OpenXML SDK 里面给很多基础类型都是自己新定义的,如 SingleValue 和 StringValue 等,这些定义都继承...
2020-04-08 00:29:48 389
gtk 3.24.24 for win32
2022-08-08
鼠标光标大全1.0.0.zip
2021-08-05
Microsoft.Templates.4.1.21179.1.vsix
2021-07-21
ECMA-376.7z
2021-07-03
OpenXMLSDK v25.7z
2021-06-05
Fix WriteableBitmap hangs when source bitmap is rendered on other thread
2021-04-17
WPF 私有构建版本 2021.4.17.zip
2021-04-17
sublime_merge_build_2039_x64_setup.exe
2020-12-23
MonoFramework-MDK-6.12.0.114.macos10.xamarin.universal.pkg
2020-12-23
nuget 5.8.0.6930.exe
2020-11-16
myscript-iink-recognition-text-zh_CN 1.3.zip
2020-07-20
Docker Desktop Installer 2.3.0.3 45519 windows community.7z
2020-07-05
dotnet-sdk-5.0.100-preview.7.20319.6-win-x64.exe
2020-06-23
sublime_merge_build_2020_x64_setup.exe
2020-06-22
vsdbg-16-6-20415-1 vsdbg-linux-musl-x64.zip
2020-06-22
vsdbg-16-6-20415-1 vsdbg-linux-x64.zip
2020-06-22
aspnetcore-runtime-3.1.4-linux-x64.tar.gz
2020-05-23
DPC Latency Checker 1.4.0.zip
2020-05-19
strawberry-perl-5.28.1.1-1-win64-x64.zip
2020-04-23
Snoop 3.0.0-alpha0116.msi
2020-04-18
dotnet-runtime-3.1.2-linux-x64.tar.gz
2020-04-03
aspnetcore-runtime-3.1.2-linux-x64.tar.gz
2020-04-03
影子输入法1.5.6稳定版.7z
2020-04-03
dotnet-core-uninstall-1.0.115603.msi
2020-03-12
PowerShell.Linux.x64.7.0.0-rc.2.nupkg
2020-03-07
dotnet-sdk-3.1.102-linux-x64.tar.gz
2020-03-07
dotnet-sdk-5.0.100-alpha1-015515-win-x64.exe
2020-03-06
mono-6.6.0.161-x64-0.msi
2020-03-01
UnitySetup-WebGL-Support-for-Editor-2018.3.7f1.exe
2020-03-01
dotnet-sdk-3.0.102-win-x64.exe
2020-03-01
mono-wasm-e894d683f9f.zip
2019-11-05
mono-wasm-f5cfc67c8ed.zip
2019-11-05
microsoft.dotnet.ilcompiler.1.0.0-alpha-27527-02.nupkg
2019-10-24
我想在linux运行c#程序,请问我需要做什么?
2015-04-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人