lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

dotnet X11 窗口之间发送鼠标消息 模拟鼠标输入

本文记录我阅读 Avalonia 代码过程中所学习到的在 X11 的窗口之间发送鼠标消息,可以跨进程给其他进程的窗口发送鼠标消息,通过此方式可以实现模拟鼠标输入

WPF 从键盘事件 KeyEventArgs 里获取 Scan Code 的方法

本文将告诉大家如何在 WPF 里面,从键盘事件 KeyEventArgs 参数里获取到 Scan Code 键盘按键的设备独立标识符的方法

dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法

本文将告诉大家一个在 ZipArchive 里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法

dotnet 8 版本与银河麒麟V10和UOS系统的 glibc 兼容性

刚刚好 dotnet 8 的 glibc 版本足够旧,可以运行

dotnet C# 在 Linux 系统设置或获取音量以及变更音量收到通知

本文记录使用 PulseAudio 在 Linux 系统上进行设置和获取当前音量,以及是否静音。当系统音量发生变更时,收到事件通知

dotnet C# 使用 FreeType 读取和绘制字体

本文将和大家介绍在 C# 里面简单使用 SharpFont 对 FreeType 的封装,读取 ttf 等字体文件信息,绘制出某个文字到图片文件

WPF 基础绘图 创建和加工图片

本文将从控制台开始,告诉大家一个非常简单的 WPF 基础绘图方法,通过本文的方法可以调用 WPF 上层人类友好的方法,充分利用 GPU 资源,创建或加工图片,最终结果可以输出到本地文件,可支持编码出多种不同的图片格式

dotnet C# 使用 Win32 函数获取用户下载文件夹的路径的方法

大家都知道,在 dotnet 里面的可以使用 Environment.GetFolderPath 方法配合 Environment.SpecialFolder 枚举列出当前运行环境下的一些特殊文件夹。然而 SpecialFolder 枚举不包含对 Download 下载文件夹的枚举值,如咱需要获取用户当前的下载文件夹,需要使用 Win32 方法来辅助获取

WPF 解决 SelectionTextBrush 设置无效问题

本文告诉大家在 WPF 里面设置 SelectionTextBrush 无效的问题,可以通过 AppContext 的开关开启其行为

GtkSharp 设置窗口背景透明

本文告诉大家如何在 GTK Sharp 里面设置窗口背景透明

GtkSharp 获取触摸宽度高度面积尺寸信息

本文将告诉大家如何在 C# dotnet 里面,从 GTK 里面获取到触摸的宽度高度信息,即触摸面积或触摸尺寸信息

dotnet C# 警惕可空结构体的方法内部赋值无效

本文将记录一个 C# dotnet 里的一个稍微隐藏的行为,那就是如果有一个结构体存在某个的方法,此方法的作用是修改结构里面的字段或属性的值,那此时将会在可空的结构体调用此方法时,发现没有真正修改到可空结构体局部变量本身

UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败

如果在 UNO 项目里面,为了进行 XAML 条件构建,将 win 平台加入到 mc:Ignorable 里面,将会在构建时提示 Xaml Internal Error error WMC9999: Unexpected ‘NONE’ in parse rule ‘Element ::= . EmptyElement ( StartElement ElementBody ).’. 错误

UWP WinUI3 传入 AddHandler 的 RoutedEventHandler 类型与事件所需不匹配将抛出参数异常

本文记录一个 UWP 或 WinUI3 的开发过程中的问题,当开发者调用 AddHandler 时,所需的 Handler 参数类型为 RoutedEventHandler 类型,然而实际上正确类型是需要与所监听事件匹配才能符合预期工作,否则将抛出缺乏信息的参数异常

VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提示

本文记录一个 VisualStudio 黑科技,通过配置 DefaultXamlRuntime 属性,即可让非 WPF 或 WinUI 或 MAUI 等系列类型的项目也可以拥有 XAML 的智能提示,智能提示方式和 WinUI 智能提示行为相同

Pipelines.Sockets.Unofficial 一个纯托管实现对接 System.IO.Pipelines 的 Sockets 库

本文将和大家介绍 Pipelines.Sockets.Unofficial 这个由纯托管代码实现的,对接了 System.IO.Pipelines 的 Sockets 库。这个库不仅代码性能高,且上层调用的 API 足够简洁

WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件

本文记录 WPF 的一个已知问题,在 RepeatButton 上开启 IsManipulationEnabled 漫游支持之后,将会导致触摸长按到 RepeatButton 之上时,不会收到源源不断的 Click 事件

dotnet OpenXML SDK 添加 CoreFilePropertiesPart 的方法

本文记录在 OpenXML SDK 2.15 版本下,为 PPTX 文件添加 CoreFilePropertiesPart 的方法,通过本文的方法可以正确且简单的添加 core.xml 文件到 PPTX 文件里

UNO 已知问题 在后台线程触发 SKXamlCanvas 的 Invalidate 且在 PaintSurface 事件抛出异常将炸掉应用

本文记录一个 UNO 已知问题,在 UNO 里面可以利用 SKXamlCanvas 对接 Skia 绘制到应用里面。如果此时在后台线程里面调用 SKXamlCanvas 的 Invalidate 触发界面的重新刷新,但在具体的执行绘制 PaintSurface 事件里面对外抛出异常,将会导致应用炸掉

VisualStudio 2022 如何显示 dotnet 6 及以上版本的框架的代码注释为中文

官方现在只将中文注释维护到 .NET 5 版本,没有为 .NET 6 和 .NET 7 和 .NET 8 版本维护框架的中文注释。想要使用中文注释,需要使用第三方工具

UNO 新建基础库项目构建提示 UNOB0002 错误

当咱新建了一个 UNO 的基础库或被引用的项目时,可能采用的是默认的基础库或库项目创建方法,被引用的程序集没有带上 WinUI 的黑科技,导致构建提示 UNOB0002: Project XX contains a reference to Uno Platform but does not contain a WinAppSDK compatible target framework. 失败

UNO.Skia.Gtk 设置窗口尺寸变化方法

本文记录一个简单的在 UNO.Skia.Gtk 应用里面,配置 GTK 平台修改窗口尺寸的方法

WPF 的 WriteableBitmap 在 Intel 11 代 Iris Xe Graphics 核显设备上停止渲染

在 Intel 11 代锐炬 Intel® Iris® Xe Graphics 核显设备上,如果此设备使用旧版本驱动,则可能导致 WPF 的 WriteableBitmap 停止渲染。此问题和 WPF 无关,此问题是 Intel 的 bug 且最新驱动版本已修复

WPF 的 Viewport3D 等 3D 模块在带 Intel UHD 770 设备上抛出渲染异常

在带 Intel UHD 770 的设备上,使用旧版本驱动,即小于 30.0.101.1660 版本驱动,将会导致 WPF 的 3D 模块出现渲染异常。此问题和 WPF 无关,此问题是 Intel 的 bug 且最新驱动版本已修复

WPF 已知问题 包含 NaN 的 Geometry 几何可能导致渲染层抛出 UCEERR_RENDERTHREADFAILURE 异常

本文记录一个 WPF 已知问题,当传入到渲染的 Geometry 几何里面包含了 NaN 数值,将可能让应用程序收到从渲染层抛上来的 UCEERR_RENDERTHREADFAILURE 异常,且此异常缺乏必要信息,比较难定位到具体错误逻辑

WPF 冷知识 定义依赖属性的最大数量是 65534 个

远古的 WPF 框架开发的大佬们认为没有任何业务的开发者需要用到超过 65534 个依赖属性和附加属性,为了节省内存空间就限制了所有的依赖属性和附加属性的定义总和加起来不能大于等于 65535 个

dotnet UNO 如何在调试下输出界面层级结构

本文将告诉大家如何在 UNO 里面将界面的层级结构输出到调试窗口

WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大

本文将和大家介绍在什么情况下 WPF 将会在调用 VisualTreeHelper.GetDescendantBounds 方法时,返回一个无穷大的范围尺寸

WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来

WPF 触摸下如何给 StylusPointCollection 添加点

本文告诉大家如何在触摸下给 WPF 的 StylusPointCollection 添加新的点

IIncrementalGenerator 增量 Source Generator 生成代码应用 将构建时间写入源代码

本文将和大家介绍一个 IIncrementalGenerator 增量 Source Generator 生成代码技术的应用例子,将当前的构建时间写入到代码里面。这个功能可以比较方便实现某些功能的开关,比如说设置某个功能自动在具体应用发布之后过一段时间就失效等功能

dotnet core 3.1 将 UWP 控件嵌入到 WPF 应用 收到 UIA 消息主线程卡住

本文记录一个问题,此问题是在 .NET Core 3.1 的 WPF 应用里面,嵌入 UWP 控件之后,在收到 UIA 的消息时,可能让主线程卡住。暂时此问题还不知道具体的复现步骤,此问题预计和 WPF 无关,不确定是否和 UWP 相关,此问题可能仅仅只是 UIA 模块的问题

WPF 已知问题 RadioButton 指定 GroupName 后关闭窗口可能导致无法选中

本文记录一个 WPF 已知问题,当 WPF 的 RadioButton 指定 GroupName 且将 IsChecked 状态绑定到 ViewModel 上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的 RadioButton 控件无法正确在用户界面上点击选中

dotnet 8 WPF 支持在 RDP 远程桌面状态下启用渲染硬件加速

本文将和大家介绍在 dotnet 8 里 WPF 引入的新功能之一,在 RDP 远程桌面状态下启用渲染硬件加速

UNO 的 SamplesApp.Skia.Gtk 丢失字体文件抛出空异常

在运行 UNO 的 SamplesApp.Skia.Gtk 例子程序时,如果没有拷贝字体文件夹,导致字体丢失,将会在运行的时候抛出 NullReferenceException 空异常