walterlv

吕毅 - Windows 10 Developer

吕毅 - walterlv


使 32 位程序使用大于 2GB 的内存

吕毅 更新于 2017-12-26 09:05,发布于 2017-09-12 21:48

不管在 32 位 Windows 上还是在 64 位 Windows 上,32 位的应用程序都只能使用最大 2GB 的内存,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使程序使用大于 2GB 的内存。

实现一个 WPF 版本的 ConnectedAnimation

吕毅 发布于 2017-12-25 19:44

Windows 10 的创造者更新为开发者们带来了 Connected Animation 连接动画,这也是 Fluent Design System 的一部分。它的视觉引导性很强,用户能够在它的帮助下迅速定位操作的对象。

不过,这是 UWP,而且还是 Windows 10 Creator’s Update 中才带来的特性,WPF 当然没有。于是,我自己写了一个“简易版本”。

WPF 程序无法触摸操作

吕毅 更新于 2017-12-20 23:10,发布于 2017-09-12 07:34

WPF 自诞生以来就带着微软先生的傲慢。微软说 WPF 支持触摸,于是 WPF 就真的支持触摸了。对,我说的是“支持触摸”,那种摸上去能点能动的;偶尔还能带点儿多指的炫酷效果。但是,WPF 推出那会儿,绝大部分开发者都还没有触摸屏呢,开发个程序要怎么验证支不支持触摸呢?微软先生无奈地决定——你写鼠标的代码就好了,我帮你转换!于是……一大波 BUG 袭来……

让 ScrollViewer 的滚动带上动画

吕毅 发布于 2017-12-19 20:19

WPF 的 ScrollViewer 没有水平滚动和垂直滚动的属性 HorizontalScrollOffset VerticalScrollOffset,只有水平滚动和垂直滚动的方法 ScrollToHorizontalOffset ScrollToVerticalOffset,那么怎么给滚动过程加上动画呢?

迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference)

吕毅 更新于 2017-12-19 08:36,发布于 2017-12-18 21:41

在我之前的一篇博客 NullReferenceException,就不应该存在! 中,我吐槽了 C# 中 null 的弊端以及避免 null 的方法;事实上这本都是现代高级语言中极力推崇的做法。Kotlin 和 Swift 自诞生之日起引用类型就不能为空,C# 背着历史的包袱直到 8.0 才开始这么做……

WPF 自定义键盘焦点样式(FocusVisualStyle)

吕毅 发布于 2017-12-17 15:34

WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌。这时,其自带的键盘焦点样式(FocusVisualStyle)就非常不搭了,改改会舒服得多。比如,改成 UWP 的样式。

本文将展示 WPF 自定义键盘焦点样式自定义的

WPF 绘制对齐像素的清晰显示的线条

吕毅 更新于 2017-12-12 22:10,发布于 2017-12-12 21:49

此前有小伙伴询问我为何他 1 像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用。于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结。此后在 StackOverflow 中,我回答了 graphics - WPF DrawingContext seems ignore SnapToDevicePixels - Stack Overflow 问题。

阅读本文,我们将了解解决 WPF 像素对齐的四种方法以及其各自的适用范围和副作用。

UI 设计中的视觉无障碍设计

吕毅 发布于 2017-12-10 18:58

我给博客改了主题色,从 这样的 改成了 这样的;然而我问小伙伴看看效果他却并没有发现改变。

前后主题色差异

红绿色盲在亚洲人中占比,男性约 5%,女性则小得多。也就是说,就算仅考虑为国内用户开发应用,这也是很大的一部分用户了。

本文将通过更加了解色盲(Color Blindness)来指导我们为更多用户提供更好的 UI 设计。

真的要比较 for 和 foreach 的性能吗?(内附性能比较的实测数据)

吕毅 发布于 2017-12-07 23:30

小伙伴告诉我,List<T>.Find 方法比 List.FirstOrDefault 扩展方法性能更高,详见:C# Find vs FirstOrDefault - 林德熙。这可让我震惊了,因为我从来都没有考虑过在如此微观尺度衡量它们的性能差异。

异步任务中的重新进入(Reentrancy)

吕毅 发布于 2017-12-05 22:10

一个按钮,点击执行一个任务。我们可能直接在它的 Click 事件中写下了执行任务的代码。

一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效;一旦进入了异步世界,这便是无尽的 BUG!

当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

吕毅 发布于 2017-11-30 01:29

这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了;也不会说 MVVM 的好处,因为这样的文章也是一搜一大把。我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。

NullReferenceException,就不应该存在!

吕毅 发布于 2017-11-30 00:08

如果要你说出 .NET 中的三个异常,NullReferenceException 一定会成为其中一个;如果说出 .NET 中的一个异常,NullReferenceException 也会被大多数人说出来。它让这么多人印象深刻,是因为它在项目中实在是太常见了,常见到每一个 C#/.NET 入门者必然会遇到。

然而,这个异常本不应该存在!

极限压缩 PNG

吕毅 发布于 2017-11-29 20:17

为了让博客的访问者有更快的访问速度,同时兼顾显示效果,我们有些选择却不多——比如选用 WebP 格式。但考虑到浏览器兼容性问题,有时不得不考虑依然 PNG。

这里我找到一款极限 PNG 压缩工具——LimitPNG。

Support Horizontal Scrolling of TouchPad in WPF Application

吕毅 发布于 2017-11-23 22:09

Finally, Microsoft started to support touchpad like Apple did years ago. As Microsoft never do well in touchpad, WPF application even doesn’t support horizontal scrolling of touchpad. Also, WPF uses MouseWheel to handle vertical scrolling, not a particular method.

This article contains my method to support horizontal scrolling of touchpad in a WPF application. It uses MouseWheel indeed, but horizontals and verticals are all supported.

使 WPF 支持触摸板的横向滚动

吕毅 发布于 2017-11-23 21:25

微软终于开始学苹果一样好好做触摸板了(就是键盘空格键下面那一大块)。然而鉴于以前没有好好做,以至于 WPF 程序甚至都没有对触摸板的横向滚动提供支持(竖向滚动是直接使用了 MouseWheel,汗……)。但有些功能真希望能够支持横向滚动!

本文将介绍让触摸板支持横向滚动的方法,本质上也是用 MouseWheel,但却支持了横向。