lindexi

林德熙 - Windows 10 App Developer

林德熙

dotnet 读 WPF 源代码笔记 渲染收集是如何触发

在 WPF 里面,渲染可以从架构上划分为两层。上层是 WPF 框架的 OnRender 之类的函数,作用是收集应用程序渲染的命令。上层将收集到的应用程序绘制渲染的命令传给下层,下层是 WPF 的 GFX 层,作用是根据收到的渲染的命令绘制出界面。本文所聊的是渲染上层部分,在 WPF 框架是如何做到界面刷新渲染,包括此调用的顺序以及框架逻辑

WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果

在 WPF 里面,可以通过 DrawingVisual 来进行使用底层的绘制方法,此方法需要调用 DrawingVisual 的 RenderOpen 拿到 DrawingContext 类型的对象,接着调用此对象的方法来进行界面绘制。在绘制完成之后,如果依然保存绘制过程的对象,例如 Transform 对象,那当界面再次刷新时,如果更改此对象的属性,将会影响渲染

Windows 对全屏应用的优化

全屏应用对应的是窗口模式应用,全屏应用指的是整个屏幕都是被咱一个应用独占了,屏幕上没有显示其他的应用,此时的应用就叫全屏应用。如希沃白板这个程序。本文主要告诉大家从微软官方的文档以及考古了解到的 Windows 对全屏应用的优化,以及是如何进行的优化,方便小伙伴在撕的时候可以找到根据

dotnet C# 多次对一个对象调用构造函数会发生什么

今天来玩一点变态的,使用反射获取到某个类型的构造函数,接着多次对此类型的某个对象调用构造函数方法。请问此时会发生什么

VisualStudio 调试时会不断刷新 WPF 应用渲染

在 VisualStudio 附加调试和没有用 VisualStudio 附加调试时,对应用程序是有不同的影响,如 VisualStudio 设计器将会在附加调试 WPF 应用的时候,不断刷新 WPF 应用的渲染。也就是说,如果你觉得界面视觉效果不对或者对,也许可以甩锅到 VisualStudio 上

dotnet C# 给结构体字段赋值非线程安全

在 dotnet 运行时中,给引用对象进行赋值替换的时候,是线程安全的。给结构体对象赋值,如果此结构体是某个类的成员字段,那么此赋值不一定是线程安全的。是否线程安全,取决于结构体的大小,取决于此结构体能否在一次原子赋值内完成

dotnet C# 只创建对象不调用构造函数方法

有时我期望只是创建出对象,但是不要调用对象的构造方法,可以通过使用 FormatterServices 的 GetUninitializedObject 函数来实现只创建对象不调用构造函数方法

WPF 推荐一个剪贴板内容查看工具

本文来安利大家一个好用的 Windows 剪贴板的内容查看工具

WPF 简单判断主线程界面是否卡顿的方法

本文来告诉大家如何使用简单的代码判断当前的软件的 UI 线程或界面是否卡顿

dotnet C# 如何正确获取藏文的字数

在咱国内有很多有趣的文字,其中藏文属于有趣的文字里面特别有趣的一项,特别是对于做文本库的同学,大概都知道什么叫合写字吧。合写字的含义就是多个字符一起组成一个字。但是多个字符在内存中,本身就是多个字符对象,以往统计某个字符串的字数,咱简单判断只是拿字符串的字符数量进行获取。这个方法在藏文下肯定是不可行的,藏文的一个字由多个字符组成,因此需要本文介绍的特别的方法

dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见的额外版权信息

本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容

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

本文来告诉大家如何通过 Win2d 完全控制笔迹绘制逻辑,本文适合用来实现复杂的自定义逻辑,可以完全控制笔迹的行为。包括在书写过程中切换模式,如进行手势擦除切换为橡皮擦模式

dotnet 6 数组拷贝性能对比

本文来对比多个不同的方法进行数组拷贝,和测试其性能

win10 uwp 通过 win2d 画出笔迹

本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 的笔迹的性能比在 WPF 高很多。但是如果只是使用默认的 InkCanvas 可以做的很少,同时性能也不是特别高,在加上 win2d 才可以做到和来画一样快的性能

dotnet OpenXML 读取 PPT 形状边框定义在 Style 的颜色画刷

本文来和大家聊聊在 PPT 形状使用了 Style 样式的颜色画刷读取方法

dotnet C# 全局 Windows 鼠标钩子

本文来告诉大家一个简单的方法实现全局的 鼠标钩子

C# Task.Run 和 Task.Factory.StartNew 区别

有小伙伴问我,为什么不推荐他使用 Task.Factory.StartNew ,因为 Task.Run 是比较新的方法。 本文告诉大家 Task.Run 和 Task.Factory.StartNew 区别

WPF 如何获取有哪些 VisualBrush 用了某个控件

我写了一个特殊的控件,我期望了解到有哪些 VisualBrush 捕获了此控件,或者说有哪些 VisualBrush 用了此控件的界面

dotnet 在 WPF 里显示数学 π 的颜色

有逗比小伙伴问我,数学的 π 视觉效果是啥。于是我就来写一个逗比的应用将 π 的颜色在 WPF 应用画出来。原理就是读取 π 的小数点后的数值,然后使用逗比算法转换为 RGB 颜色像素,接着将这些像素转换为一张图片

dotnet 教你写一个可以搞炸本机所有 WCF 应用的程序方法

作为团队里面挖掘机出身的我,怎么能不多挖一些坑好将小伙伴们都埋进去呢。本文来告诉大家一个有趣且简单的方法,此方法可以将本机的 WCF 玩坏,不敢说真的搞炸本机所有 WCF 应用,但搞炸大部分基于 WCF 的软件还是没有问题的。阅读本文,你可以不仅可以了解到有这样的逗比方法,更重要的是在你的 WCF 模块炸掉的时候,你知道要甩锅给谁

dotnet 对指针转换为结构体多个不同方法的性能分析

在 dotnet 里面,拿到一个指针,可以有多个不同的方法转换为结构体,本文将来告诉大家这几个方法的性能的差别

dotnet OpenXML 文本删除线解析方法

本文来告诉大家如何解析读取在 OpenXML 里面存放的文本删除线,本文使用 PowerPoint 作为例子来告诉大家如何读取然后在 WPF 应用里面显示

dotnet OpenXML PPT 动画框架入门

本文将从 OpenXML 方面聊 PPT 的动画框架,本文是属于编程方面而不是 PPT 动画制作教程

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

本文来告诉大家如何在 WPF 应用 HOST 了 UWP 的 InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能的实现方法

WPF 基于 WER 注册应用崩溃无响应回调和重启方法

本文来告诉大家如何在 Windows 上利用从 Vista 引入的 Windows Error Reporting (WER) 机制来实现,在应用崩溃、无响应等异常的时候收到回调用于处理信息保存

WPF 稳定的全屏化窗口方法

本文来告诉大家在 WPF 中,设置窗口全屏化的一个稳定的设置方法。在设置窗口全屏的时候,经常遇到的问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕的边。本文的方法是基于 Win32 的,由 lsj 提供的方法,当前已在 500 多万台设备上稳定运行超过半年时间,只有很少的电脑才偶尔出现任务栏不消失的情况

框架设计的想法

如何开发一个框架,或者如何搭建,如何设计一个框架,很难教会一个新人,本文记录一些能用文字写的方法

dotnet 使用 XWT 构建跨平台客户端 入门篇

本文告诉大家如何入门开始开发一个基于 mono 组织开源的 XWT 跨平台客户端 UI 框架的应用,本文的 xwt 是在 GitHub 上完全开源的,基于 MIT 协议的,底层采用 GTK# 的 UI 框架

WPF 框架开发 ColumnDefinition 和 RowDefinition 的代码在哪

我的 VisualStudio 在更新到 2022 就构建不通过 WPF 仓库,提示我在 Grid 的代码里面找不到 ColumnDefinitionCollection 和 RowDefinitionCollection 等的定义,在我开始找 WPF 仓库关于这几个类型的定义时,居然找不到对应的源代码。本文来告诉大家在 WPF 仓库里面是如何存放几个类型

WPF 鼠标光标大全

在 WPF 中,可以通过 Cursors 静态类里面的各个预定义属性来设置移入到某个元素时,鼠标光标的外观样式。今天小伙伴问我哪个是鼠标移动控件的鼠标外观属性,在看到 Cursors 静态类里面那么多属性时,我也不知道用哪个好。于是我就写了一个叫鼠标光标大全的应用,可以让大家快速知道有哪些可以用的光标

WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目

本文对新手友好。在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架。搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门学习如何开发应用

WPF 基于 .NET 5 框架和 .NET 6 的 SDK 进行完全单文件发布

本文来告诉大家如何基于 .NET 5 框架和 .NET 6 SDK 进行完全单文件发布,这是对 WPF 应用程序进行独立发布,生成的是完全单文件的方法

Office Open XML 的测量单位

在 OpenXML 中,有着大量的不同的单位,本文记录 Office Open XML (OOXML) 的测量单位,以及提供一个专门用来处理这些单位换算的开源库给大家

WPF 被输入法带崩进程

本文记录搜狗输入法某个版本在向 WPF 应用程序输入的时候,让 WPF 应用程序进程退出的问题

WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流

这是在 GitHub 上有小伙伴报的问题,在 WPF 中,不支持调用 BitmapDecoder.Create 方法,传入的 FileStream 是配置了 FileOptions.Asynchronous 选项的文件流。本质原因是 WIC 层不支持,和 WPF 没有关系