- 博客(2029)
- 资源 (174)
- 问答 (1)
- 收藏
- 关注
原创 dotnet OpenXML 文本字体的选择规则
在 Office 的文本排版里面,会根据字符选择使用哪个字体插槽。也就是实际上在 Office 里面可以在一个文本段里面指定多个字体,会根据实际的字符使用不同的字体在做 Office 解析的时候,在 OpenXML SDK 里面是没有找到表示字体的属性的,只能找到 LatinFont 和 EastAsianFont 和 ComplexScriptFont 和 SymbolFont 这几个...
2020-08-06 00:30:30 638
原创 高性能笔迹原理
本文只聊原理部分各个硬件都是独立的假定是需要做触摸屏的笔迹,那么触摸屏和屏幕是独立的硬件,而处理数据的主机又是独立的硬件独立的硬件意味着可以并行执行,因此最佳方式就是隐藏时间,即极限优化能做到是速度最慢的硬件的频率例如有三个硬件,如触摸框 和 屏幕 和 PC 主机从触摸框收到触摸消息,从 PC 进行处理告诉屏幕如何绘制,在屏幕进行绘制简单分为三个硬件,此时假定触摸框收到触摸点到将...
2020-08-05 00:50:05 398
原创 WPF 使用 Direct Manipulation 的方法
小伙伴是否了解在 UWP 和 WPF 触摸的滑动的顺滑是不相同的,一个原因是 UWP 使用了 Direct Manipulation 这个科技。这个科技需要采用 Pointer 消息的支持,本文告诉大家如何使用本文的代码都是从 Using DirectManipulation with WPF 这篇博客抄的可以运行的代码放在 github 欢迎小伙伴访问顶层的用法效果如下 ...
2020-08-04 01:14:46 412
原创 WPF 让 TextBox 支持水平滚动
超级简单的方法,只需要设置 HorizontalScrollBarVisibility 可见就可以了但是为什么我设置了,没有水平滚动条呢?也许是设置了 TextWrapping 属性 <TextBox x:Name="Text" HorizontalScrollBarVisibility="Visible" Margin=...
2020-08-04 01:14:46 966
原创 C# dotnet 使用判断文件夹存在的方法判断一个文件路径会怎样
假定我有一个文件的路径,我将这个文件路径放在文件夹判断方法里面,请问此时返回的是存在还是不存在?答案是返回不存在如下面测试代码,这里的 GelteajoutrerebaKoutigasremawcho.dll 就是程序集,也就是文件是存在的,那么放在 DirectoryInfo 判断输出的内容是否存在namespace GelteajoutrerebaKoutigasremawcho{...
2020-08-04 01:14:46 615
原创 asp dotnet core 提供大文件下载的测试
本文仅仅是提供测试使用的代码提供文件下载只需要返回 PhysicalFile 方法,如下面代码 [HttpGet] public IActionResult Get() { var folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Locati...
2020-08-04 01:14:46 1033
原创 WPF 让窗口激活作为前台最上层窗口的方法
在 WPF 中,如果想要使用代码控制,让某个窗口作为当前用户的输入的逻辑焦点的窗口,也就是在当前用户活动的窗口的最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口但是在一些特殊的设备上,使用下面代码调起窗口只是在任务栏闪烁图标,而没有让窗口放在最上层window.Show();window.Activate();在大部分设备上,通过 Show 和 ...
2020-08-03 00:40:38 6734 2
原创 C# dotnet 使用 startIndex 提升 IndexOf 的性能
在代码审查 WPF 仓库的时候,小伙伴告诉我说使用 dotnet core 版本的 WPF 开了 ReadyToRun 的提升还不够大,他准备开始一大波业务无关的优化,其中就包含了 xaml 中的字符串相关优化。我在 davidwrighton 大大的优化代码和 pentp 大大的代码审查里面学到了使用 startIndex 提升 IndexOf 的性能,本文就来和大家分享一下假定只有一个...
2020-08-03 00:40:38 647
原创 dotnet Microsoft.Recognizers.Text 超强大的自然语言关键词提取库
本文和大家介绍一个使用超级简单,但是功能特别强大的自然语言关键词提取库,可以根据输入的自然语言提取出里面的信息。例如我在一句话里面说了哪些数值变量或者说了手机号码等先看看下图的一个效果,下图是尝试识别一句话里面的数值信息新建一个 WPF 项目,大概运行效果如下先编辑 csproj 文件,在里面添加安装库的代码 <ItemGroup> <...
2020-08-01 00:31:27 1267
原创 WPF SharpDx 性能优化方法
本文记录一些通用的 SharpDx 的性能优化方法本文属于 SharpDx 系列 博客,建议从头开始读不要监听 ContentRendered 事件监听了 Window 的 ContentRendered 事件将会降低整个 WPF 的渲染性能关注硬件渲染注意是否在 WPF 开启了硬件渲染,详细请看 WPF 渲染级别 和 WPF 设置纯软件渲染执行业务代码的耗时在执行 Sharp...
2020-08-01 00:31:27 953
原创 Win10 的 WPF 程序的 wisptis 服务是附加到进程的窗口
在 Win10 下,没有 WISPTIS 服务进程,和 win7 不相同。但是 WPF 依然通过 PENIMC 从 COM 获取实时触摸消息,那么 WPF 是从哪里获取通过 WindowDebugger 调试工具可以了解在 win10 将会给每个 WPF 进程添加 WISPTIS 窗口,窗口的 Class Name 是 TabletPenServiceHelperClass 请看下图...
2020-08-01 00:31:27 636
原创 通过公开的自动构建发布开源项目的库的安全意义
这是比较有争议的内容,为什么我推荐开源项目的库应该采用开源的 CI 公开进行发布。本文主要来聊安全的问题,本文的观点没法完全让小伙伴信服,只能说是我自己的看法安全的问题说的是什么问题?假定我在网上找到了一个库,这个库有一个二进制的发布,如 NuGet 包。此时尽管有代码,请问我是否可以信任这个二进制的发布的库这里涉及到的一个问题是,我无法了解到这个二进制的库是否真的从这个开源仓库里面构建...
2020-08-01 00:31:27 216
原创 ASP.NET Core 将文件夹内容输出为压缩包文件方法
本文主要是告诉大家一个省内存的方法,将整个文件夹的内容作为一个压缩包输出,但是实际上没有申请那么多的内存,也不需要升级创建一个压缩包文件。原理是通过逐个读文件然后按照压缩包格式输出在每个请求的方法可以拿到 HttpContext 属性,通过这个属性拿到 Response 属性,在这里可以使用 BodyWriter 属性,在这个属性里面写入的内容将会被客户端下载而这个属性可以作为 Strea...
2020-07-30 00:39:32 2568 1
原创 dotnet OpenXML 文本 BodyProperties 的属性作用
本文收集 a:bodyPr 文本框属性 BodyProperties 的属性的作用根据 ECMA-376 文档 21.1.2.1.1 bodyPr (Body Properties) 在 Office 的 OpenXML 使用这个属性定义文本框的属性本文的 OpneXMl SDK 的获取代码前提都有以下代码public void Foo(BodyProperties textBodyP...
2020-07-30 00:39:32 494
原创 Office Open XML 的测量单位
本文记录 Office Open XML (OOXML) 的测量单位在 Office Open XML 默认单位是 dxa 也就是像素点的 20 倍,如 ISO 216 A4 (210x297mm ~ 8.3×11.7in) 的大小可以使用下面代码表示在页面大小 Page width Page height 和边距 margin 和缩进 tabs 使用<w:pgSz w:w=&#...
2020-07-29 00:44:37 1041
原创 dotnet 的 TaskCompletionSource 的 TrySetResult 是线程安全
在创建一个 TaskCompletionSource 期望让等待的逻辑只会被调用一次,而调用的是多线程,可以使用 TrySetResult 方法,这个方法是线程安全,只会让 TaskCompletionSource 被调用一次在多个线程调用 TaskCompletionSource 的 TrySetResult 方法,只有一个线程能进入设置,其他线程将会拿到返回 false 的值测试代码...
2020-07-29 00:44:37 599
原创 Roslyn 在 NuGet 包中放注释 xml 文件的方法
本文告诉大家如何在打出的 NuGet 包含代码的注释,这样安装了 NuGet 的小伙伴就可以在 VS 上看到对应的方法和类的注释在使用 SDK Style 格式,可以使用下面一句话在输出的时候添加 xml 注释文件,在打包 NuGet 添加 xml 注释<PropertyGroup> <GenerateDocumentationFile>true&l...
2020-07-29 00:44:37 724 5
原创 Roslyn 打包 NuGet 包添加改动日志
默认的 NuGet 包支持在 releaseNotes 中添加更改日志,用户可以通过更改日志了解各个版本更新的内容。在 SDK Style 格式的 csproj 文件,可以读取本地的文本文件的内容作为 NuGet 包的改动日志在我的团队的 CBB 基础库项目的文件规范,要求每个项目都会包含 README.md 和 CHANGELOG.md 文件,其中的 CHANGELOG.md 文件就是...
2020-07-29 00:44:37 272
原创 WPF 列表右键菜单比较符合 MVVM 的命令绑定方法
群里小伙伴问我如何在 ListView 的右击的时候知道右击的是哪一项,他想要获取对应的行信息。他使用的是 GridView 做的,于是我告诉他需要自己写 ItemContainerStyle 在 GridViewRowPresenter 里添加右键的逻辑。但是这样写不清真,我问到了他的本质问题其实只是想要做右键菜单。刚好我在写一个测试应用,用于测试我的文件下载库,此时需要用到在右击某一个下载项的...
2020-07-28 00:27:55 2002
原创 dotnet 使用 SemaphoreSlim 可能的内存泄露
在使用 SemaphoreSlim 这个锁,能做到的是指定让任务执行几次,同时提供异步方法,减少线程占用。但异步的方法如果没有用对,会因为异步状态机的引用,而存在内存泄露在 dotnet 的 SemaphoreSlim 的用法基本上是一个线程调用 WaitAsync 等待其他线程调用 Release 释放,在 Release 方法可以设置释放几次,设置之后就能通过几次的 WaitAsync...
2020-07-27 00:43:02 408
原创 dotnet OpenXML 文本 EndParagraphRunProperties 的作用
其实我想要记录的仅仅只是 a:endParaRPr 对文本布局的作用按照 ECMA 376 的说法,此属性的作用是指定用户在此段落后开始输入其他文本时要保留的属性。只有在此段落的样式与段落本身不同时,才应设置此属性文本的属性会受到页面以及模版和所在段落的影响,而 a:endParaRPr 是一个放在 <a:p> 里面的标记,用来表示这一段的结束,在 OpenXML SDK 的...
2020-07-25 01:08:46 447
原创 dotnet OpenXML 文本 Text Line Break 的作用
本文主要和小伙伴聊 a:br 这个标记的作用在 OpenXML 的 <a:br/> 的定义是 Text Line Break 是放在文本的 <a:p> 的标记,用于表示换行如 ECMA 376 文档的 21.1.2.2.1 所说,这个标记的作用是在一段内,将两个 TextRun 使用一个垂直的换行分割。这个元素可以具备当前的 rPr (RunProperties)...
2020-07-24 06:13:23 475
原创 dotnet OpenXML 简单聊聊 PPT 文本解析
在 Office 里面的文本解析最全的范围是 Word 文本,就是属性数量本身就特别多。本文只是简单和大家聊聊 Office 里面的 PPT 的文本的解析入门。尽管 PPT 的文本也是采用 DrawingDL 的文本属性为主,不过会用到的属性将比 Word 少很多。本文将和小伙伴介绍 PPT 的文本存放的方式在 PPT 中的文本框也是形状,只是形状里面添加了特殊的设置。而没有添加特殊设置的...
2020-07-24 06:13:23 692
原创 dotnet OpenXML 从文档生成创建文档的代码的库
本文和大家介绍 Serialize.OpenXml.CodeGen 这个支持从某个文档生成用于创建出这个文档的 C# 或 VB 代码的库。作用就是可以让小伙伴在拿到一份模版文件之后,可以通过 Serialize.OpenXml.CodeGen 生成能创建出这份文档的 C# 或 VB 的代码,用于在这份代码上面更改功能,做到创建定制 Docx 或 PPTX 或 Xlsx 文档的功能这是一个完...
2020-07-23 00:34:26 383
原创 WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式
在 WPF 中,如果有一个样式是继承另一个样式,而样式没有使用 TargetType 那么在运行的时候会提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式在界面添加下面代码 <Window.Resources> <Style x:Key="Style1" TargetType=&#...
2020-07-22 04:14:09 950
原创 Office 文档 文本排版布局 中华人民共和国国家标准 标点符号用法
我在做一个和 Office 差很多的文本排版软件,而文本排版软件里面的是有国家标准的,如果不符合标准那么这个排版软件是不专业的,或者说这个软件只是一个纯文本软件,而不是一个能做文档的软件核心规则如下其中标点符号规则相对复杂,规范如下详细请看 GB/T 15834 标点符号用法请自行百度 GB/T 15834 就可以找到标准文档当前支持最好的是 WPS 的文本排版,支持较弱的...
2020-07-20 10:19:53 569
原创 dotnet ConcurrentDictionary 的 GetOrAdd 性能比 TryGetValue 加 TryAdd 低
我在 Office 的 Open-XML-SDK 库里面找到有代码线程不安全,代码里面使用了 TryGetValue 加 TryAdd 的方法添加对象,而线程安全的方法是通过 GetOrAdd 方法。不过在小伙伴的评论我找到了 GetOrAdd 性能其实在有闭包的时候不如使用 TryGetValue 加 TryAdd 调用这两个方法,但是 GetOrAdd 的优势在于能做到只创建一次对象在...
2020-07-17 03:12:15 948 1
原创 C# 8.0 文件长度 Bytes 字节转 KB 等单位字符串
本文将使用 C# 8.0 写一个相对比较省内存和性能不差的将文件长度从 Bytes 转换为单位使用 KB 或 MB 或 GB 等单位的字符串的方法代码可以复制在你的实际软件中使用 static class FileSizeFormatter { public static string FormatSize(long bytes, string format...
2020-07-13 01:55:09 938
原创 使用 IOC 控制反转和 DI 依赖注入的意义
其实我的标题没写对,这个话题我是聊不下去的。 本文只和小伙伴聊聊为什么使用容器注入,优缺点是什么。我通过问问题的方式让小伙伴了解这么做的意义在开始之前我就可以告诉小伙伴使用容器注入的缺点了,尽管这很有争议内存泄漏降低性能那是否 IOC 控制反转意味着一定需要配合 DI 依赖注入?答案是不一定的,还有好多有趣的手段那 DI 依赖注入和容器注入有什么关联?其实容器注入是依赖注入的一...
2020-07-13 01:55:09 342
原创 讲师培训 多米诺原则
我饿了,然后我要开车我总是认为其他人无法理解我的思路,以及我的方案,我总是认为自己的思路很快但实际上是这样?其实仅是表达的问题,有太多默认的知识没有被说出来我饿了,然后我要开车。逻辑是什么?为什么要开车?我饿了,我没力气走路了,接下来我想用最快的速度到达餐厅,所以我要开车。点出中间的步骤,听众的逻辑就清晰我搭建了自己的博客 https://blog.lindexi.c...
2020-07-13 01:02:05 214
原创 制作的 dotnet tool 运行失败提示依赖缺失
小伙伴做了一个很好用的 dotnet tool 工具,但是这个工具仅在他的设备上能运行,在我的设备上运行就会退出提示 An assembly specified in the application dependencies manifest (LindexiDoubi.deps.json) was not found 找不到依赖默认选择 dotnet tool 的 NuGet 包是会带上...
2020-07-13 01:02:05 1085
原创 dotnet OpenXML 为什么资源使用 Relationship 引用
在 OpenXML 文档格式里面,所有的资源以及页面之间的引用等,都是通过 Relationship 的引用,如资源需要通过 GetReferenceRelationship 的方法才能拿到。那为什么要这样设计呢在做 Office 解析,可以看到资源的引用,如图片的引用等,不是应用相对的文件路径,而是使用 r:id="xx" 的方式引用,而实际的引用文件需要在 xx.rel...
2020-07-10 00:53:05 495
原创 dotnet OpenXML 的 spcPct 和 spcPts 表示距离的不同
在 OpenXML 里面的文本排版里面使用到 spcPct (Spacing Percent) 和 spcPts(Spacing Points)两个不同的单位用来表示段前空白和段后空白以及行间距在 Office 的文本排版里面,会在 spcAft (Space After) 段后空白空间以及 spcBef (Space Before) 段前空白空间等使用 spcPct (Spacing P...
2020-07-10 00:53:05 409
原创 推荐官方开源 PInvoke 库 包含大量 win32 封装
在调用 win32 库的时候,小伙伴会遇到的问题是不知道对应的 win32 函数应该如何写。或者在网上抄了的代码的实现都有些诡异,想要自己封装发现工作量太大。好消息是官方将 PInvoke 库在 dotnet 基金会完全开源,包含了大量的 Win32 库,如 gdi32.dll 和 kernel32.dll 和 user32.dll 等使用官方的库的优势是什么呢?第一个就是减少从网上复制粘...
2020-07-10 00:53:05 1427
原创 C# dotnet 使用 FileStream 随机文件读写
本文说的随机文件读写的随机的反义词是顺序,这里的随机文件读写对应顺序文件读写。表示文件可以不按照顺序进行读写进行文件读写的时候,基本上读是几乎不存在问题的,而写的话就稍微坑了一点,在 dotnet 里面默认没有提供 RandomAccessStream 类,这个 RandomAccessStream 类仅在 UWP 中可以使用如果在不引用 UWP 的 WPF 里面,或者在 ASP.NET...
2020-07-09 00:19:20 1108
原创 Office 文档解析 文档格式和协议
本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这个标准的协议和格式在 Office 2007 之后的 Office 文档格式采用的是 OOXML 标准格式。那什么是 OOXML...
2020-07-09 00:19:20 2649
原创 通过 cmd 批处理文件将 16 进制转 10 进制数字
我在用户的电脑上通过 spyxx 找到某个进程的 id 都是在 spyxx 使用 16 进制显示,而任务管理器使用 10 进制显示,用户的电脑没有计算器。我如何使用 bat 或 cmd 等批处理文件快速将十六进制的数字转换为十进制的数字创建一个文本文件,修改后缀名为 cmd 文件使用如下代码即可创建一个变量,在变量里面设置十六进制,此时输出就是 10 进制字符串set /A hex=0x...
2020-07-09 00:19:20 3766 1
原创 dotnet 通过依赖注入的 Scoped 给工作流注入相同的上下文信息
本文将来聊聊 Microsoft.Extensions.DependencyInjection 这个依赖注入框架的 Scoped 功能的一个应用,这个框架是默认 ASP.NET Core 的核心库将会默认被引用。而其他 .NET 的应用如 WPF 或 Xamarin 等也可以使用这个库。因此本文标题就是 dotnet 而不是具体哪个框架在开发的时候,咱会有一些复杂的逻辑需要多个类合作进行执行,而...
2020-07-09 00:19:20 783
原创 C# dotnet WPF 使用 OpenXml 解析 Excel 文件
在 2013 微软开源了 OpenXml 解析库,在微软的 Excel 文档,使用的文档格式就是国际规范的 OpenXml 格式。这个格式有很多版本,详细请看百度。因为表格文稿使用的是 OpenXml 在 .NET 开发可以非常简单将 Excel 文档进行解析,大概只需要两句话本文通过一个简单的 WPF 程序告诉大家如何解析,这个简单的 WPF 程序简单到仅有一个按钮,在点击按钮时自动解析 ...
2020-07-06 23:55:03 975
原创 dotnet OpenXML 解析 PPT 页面元素文档格式
本文告诉大家在 OpenXML 里面的 PPT 页面 Slide 的元素文档格式是否小伙伴还记得如何使用 OpenXML SDK 获取一份 PPTX 文件的某一个页面?如果不记得,请看 C# dotnet 使用 OpenXml 解析 PPT 文件如下是一个简单的 PPTX 的 Slide 页面大概的主结构如下对应缩写如下p - Presentationp:sld - Sl...
2020-07-06 00:16:18 1206 1
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关注的人