制作 Windows 10 安装盘,解决大于 4GB 的 Windows 10 镜像在 UEFI 模式下的安装问题 2018-02-22 14:14 制作一个 Windows 安装 U 盘是很容易的,使用 UltraISO 这样的刻录工具量产一个 iso 镜像文件到 U 盘即可。然而随着 Windows 10 版本号的提升,镜像变得越来越大,终于 FAT32 文件系统不再能够容纳得下安装镜像文件 install.wim 了。 本文将介绍如何制作镜像文件大于 4GB 的 UEFI 启动的系统安装盘。
在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘 2018-02-22 14:13 以 UEFI 启动的 Windows 磁盘必须是 GPT 格式。本文将介绍如何在安装 Windows 期间将磁盘从 MBR 转换成 GPT。
WPF 和 UWP 中,不用设置 From 或 To,Storyboard 即拥有更灵活的动画控制 2018-02-19 22:41 无论是 WPF 还是 UWP 开发,如果用 Storyboard 和 Animation 做动画,我们多数时候都会设置 From 和 To 属性,用于从起始值动画到目标值。然而动画并不总是可以静态地指定这些值,因为更多的时候动画的起始值和目标值取决于当前 UI 的状态。 本文中,我将将尽量避免设置 From 和 To 值,让动画可以随时中断并重新开始,而中途不会出现突兀的变化。
分享一个算法,计算能在任何背景色上清晰显示的前景色 2018-02-19 22:37 背景色千差万别,如果希望在这样复杂的背景色下显示清晰可辨的前景色(例如显示文字),那如何选择这样的前景色才能确保适用于所有的背景呢?
在 Windows 10 上为 WPF 窗口添加模糊特效(就像开始菜单和操作中心那样) 2018-02-19 22:31 其实我是希望能够找到为 Win32 桌面程序实现 Fluent Design System 效果的,不过一直没找到。倒是发现了一个可以让 Win32 桌面程序做出类似 Windows 10 开始菜单和操作中心那种模糊效果的方法。 写这篇文章并不意味着我推荐大家这么去做,只是希望将方法总结出来,作为一个研究点而已。 本文提供了一个完整的用于在 Windows 10 上实现模糊特效的 C# 类,没有放到 GitHub 也没有其他类型的开源。如果需要直接拿走就好。
应该抛出什么异常?不应该抛出什么异常?(.NET/C#) 2018-02-04 13:25 我在 .NET/C# 建议的异常处理原则 中描述了如何 catch 异常以及重新 throw。然而何时应该 throw 异常,以及应该 throw 什么异常呢?
.NET/C# 建议的异常处理原则 2018-02-04 13:19 “体验”一词早已泛滥却又能够粗略地表达开发团队对客户端产品的要求,“质量”在 卡诺模型(KANO Model) 中是“必备特性”——做得好了用户感觉不到,做得差一点儿用户就会破口大骂。 本文将以提升客户端 GUI 产品质量为目标,谈谈 .NET/C# 中建议的异常处理方式。(如果想了解更具体的应该抛出什么异常,请前往我的另一篇文章 应该抛出什么异常? - 吕毅)
为什么委托的减法(- 或 -=)可能出现非预期的结果?(Delegate Subtraction Has Unpredictable Result) 2017-12-28 02:03 当我们为一个委托写 -= 的时候,ReSharper 会提示“Delegate Subtraction Has Unpredictable Result”,即“委托的减法可能出现非预期的结果”。然而在写为事件写 -= 的时候却并没有这样的提示。然而这个提示是什么意思呢?为什么会“非预期”?为什么委托会提示而事件不会提示? 阅读本文将了解委托的减法。
使 32 位程序使用大于 2GB 的内存 2017-12-26 01:05 不管在 32 位 Windows 上还是在 64 位 Windows 上,32 位的应用程序都只能使用最大 2GB 的内存,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使程序使用大于 2GB 的内存。
让 ScrollViewer 的滚动带上动画 2017-12-19 12:19 WPF 的 ScrollViewer 没有水平滚动和垂直滚动的属性 HorizontalScrollOffset VerticalScrollOffset,只有水平滚动和垂直滚动的方法 ScrollToHorizontalOffset ScrollToVerticalOffset,那么怎么给滚动过程加上动画呢?
真的要比较 for 和 foreach 的性能吗?(内附性能比较的实测数据) 2017-12-07 15:30 小伙伴告诉我,List<T>.Find 方法比 List.FirstOrDefault 扩展方法性能更高,详见:C# Find vs FirstOrDefault - 林德熙。这可让我震惊了,因为我从来都没有考虑过在如此微观尺度衡量它们的性能差异。
当我们使用 MVVM 模式时,我们究竟在每一层里做些什么? 2017-11-29 17:29 这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了;也不会说 MVVM 的好处,因为这样的文章也是一搜一大把。我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。
极限压缩 PNG 2017-11-29 12:17 为了让博客的访问者有更快的访问速度,同时兼顾显示效果,我们有些选择却不多——比如选用 WebP 格式。但考虑到浏览器兼容性问题,有时不得不考虑依然 PNG。 这里我找到一款极限 PNG 压缩工具——LimitPNG。
自定义 Windows PowerShell 和 cmd 的字体 2017-11-22 16:26 Windows 系统下的命令行界面,字体要么是点阵字体,要么是宋体;但无论哪种,始终觉得难看了。然而,字体选择界面却始终没办法选择到我们新安装的各种字体。 本文将推荐一款可以为 PowerShell 和 cmd 使用的等宽字体,适合程序员使用。
从 Matrix 解构出 Translate/Scale/Rotate(平移/缩放/旋转) 2017-11-22 13:24 在 XAML 中,我们对一个 UIElement 进行一个 RenderTransform 是再常见不过的事情了,我们可以从众多叠加的 TransformGroup 瞬间得到一个 Matrix 表示整个变换的综合变换矩阵,然而反过来却不好做——从变换矩阵中反向得到变换分量。
用动画的方式画出任意的路径(直线、曲线、折现) 2017-11-20 01:07 WPF/UWP 中提供的 Path 类可以为我们绘制几乎所有可能的矢量图形。但是,如果这些矢量图形可以以动画的形式播放出来,那将可以得到非常炫酷的演示效果。
使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用 2017-11-10 06:42 在 WPF 中将一个现成的 Bitmap 位图转换成 ImageSource 用于显示一个麻烦的事儿,因为 WPF 并没有提供多少可以转过来的方法。不过产生 Bitmap 来源却非常多,比如屏幕截图、GDI 图、数组或其它非托管框架生成的图片。
Visual Studio 也开始支持 Ctrl 点击跳转了,于是需要解决跟 ReSharper 的冲突 2017-11-07 07:55 微软在 2017年10月9日 发布了 Visual Studio 2017 version 15.4.0。而这个版本带来了大家期待已久的 Ctrl+Click 跳转到定义的功能。然而……ReSharper 也是这样的快捷键,也是这样的功能!!! 居然冲突了啊,怎么办?
修复 WPF 窗口在启动期间短暂的白底显示 2017-11-03 15:08 不管你做的 WPF 窗口做得多么简单,是否总感觉启动的那一瞬间窗口内是白白的一片?是否试过无数偏方黑科技,但始终无法解决? 本文将介绍一种简单的方法来彻底解决这个问题。
为 Web 页面添加 iPhone 固定标签页的图标 2017-10-27 16:16 我曾经将一个 Web 标签页固定到 iPhone 的主屏幕上,发现居然有一个图标。当时没有留意,可直到今天发现我的博客页面在我的 iPhone 主屏幕上显示一片空白后,才想起来原来还可以自定义图标。
使用 ExceptionDispatchInfo 捕捉并重新抛出异常 2017-10-26 23:38 当你跑起了一个异步线程,并用 await 异步等待时,有没有好奇为什么能够在主线程 catch 到异步线程的异常? 当你希望在代码中提前收集好异常,最后一并把收集到的异常抛出的时候,能不能做到就像在原始异常发生的地方抛出一样? 本文介绍 ExceptionDispatchInfo,专门用于重新抛出异常。它在 .NET Framework 4.5 中首次引入,并原生在 .NET Core 和 .NET Standard 中得到支持。
如何组织一个同时面向 UWP/WPF/.Net Core 控制台的 C# 项目解决方案 2017-10-21 03:20 希望写一个小型工具,给自己和需要的人。考虑到代码尽可能的复用,我准备采用 .Net Standard 来编写大多数核心代码,并基于 .Net Core 编写跨平台控制台入口,用 WPF 编写桌面端 UI 入口,用 UWP 作为可上架商店的 UI 入口,然后用 Shared Project 共享 WPF 和 UI 的多数 UI 入口代码。 阅读本文将了解到如何在尽可能复用代码的情况下组织这样的 C# 解决方案。
UWP 和 WPF 不同,ListView 中绑定的集合修改顺序时,UI 的刷新规则 2017-10-20 00:14 ObservableCollection<T> 中有一个 Move 方法,而这个方法在其他类型的集合中是很少见的。由于 ObservableCollection<T> 主要用于绑定,涉及到 UI 更新,而 UI 更新普遍比普通的集合修改慢了不止一个数量级,所以可以大胆猜想,Move 的存在是为了提升 UI 刷新性能。 然而事实真是这样的吗?
GitHub 的 Pull Request 和 GitLab 的 Merge Request 有区别吗? 2017-10-12 01:13 在 GitHub 上混久了,对 Pull Request 就……;在 GitLab 上混久了,对 Merge Request 就……然而它们之间有不同吗?为什么要用两个不同的名称?
查询已连接 Wi-Fi 的密码(入门和进阶两种方法) 2017-10-09 13:01 新买了手机或者带着朋友去好玩的地方,我自己的 Windows 10 设备连接上了 Wi-Fi,朋友也希望连接上,但是我忘记了密码怎么办?
CaptureMouse/CaptureStylus 可能会失败 2017-10-09 11:05 在 WPF 中,如果我们要做拖动效果,通常会调用一下 CaptureMouse/CaptureStylus 以便当鼠标或手指离开控件的时候依然能够响应 Move 和 Up 事件。不知有没有注意到这两个函数其实是有 bool 返回值的?——是的,它们可能会失败。
彻底删除 Git 仓库中的文件避免占用大量磁盘空间 2017-09-28 23:36 今天早上照常 git fetch --prune 获取大家写的代码,发现需要好长时间,但没怎么在意。直到下午小伙伴们才发现居然 fetch 了一个多 GB!询问才发现小伙伴 JAKE(其实我是在推荐博客)误传了 1.47GB 的垃圾文件。关键是等发现时,develop 分支上已经有 20+ 个基于这个文件的新提交了。 小伙伴说“不要紧,现在我已经删除它了!”突然一阵后背发凉,我们才 900M 的仓库肯定一下子飙到了 2000+M,必须马上处理之。