• walterlv
  • 朋友
  • RSS
  • 主题
搜索
Microsoft MVP

吕毅

.NET and Windows Developer, Microsoft MVP

  • 博客
  • 胡思乱想
  • 朋友
  • 开源项目
  • 关于
  • RSS 订阅

    WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)

    2021-01-16 00:30

    在 WPF 中,如果想做一个背景透明的异形窗口,基本上都要设置 WindowStyle="None"、AllowsTransparency="True" 这两个属性。如果不想自定义窗口样式,还需要设置 Background="Transparent"。这样的设置会让窗口变成 Layered Window,WPF 在这种类型窗口上的渲染性能是非常糟糕的。

    本文介绍如何使用 WindowChrome 而不设置 AllowsTransparency="True" 制作背景透明的异形窗口,这可以避免异形窗口导致的低渲染性能。

    Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)

    2021-01-04 12:33

    本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。

    适合 .NET 开发者用的 GitHub Actions(时不时更新)

    2020-12-03 09:44

    本文制作并长期更新适合 .NET 开发者用的 GitHub Actions。整理方式为整个文件而不是单个可用的模块,这样可以方便大家以最快的速度为自己的项目添加 GitHub Actions。当然自己改改也可。

    各个版本 Windows 10 的名称、完整版本号、开发代号和系统自带的 .NET Framework 版本

    2020-11-30 06:55

    Windows 10 名称 Windows 版本 开发代号 自带的 .NET Framework 版本
    :      

    使用 Xamarin 在 iOS 真机上部署应用进行调试

    2020-10-31 01:00

    虽然 Xamarin 可以在 Windows 操作系统上编写和调试,但如果开发 iOS 应用,那么我们依然需要一台安装有 XCode 和 Visual Studio for Mac 的 Mac 电脑。做真机部署不是像平时使用太阳系第一 IDE Visual Studio 那样方便。

    所以本文需要介绍如何使用 Xamarin 在 iOS 真机上部署应用进行调试,然后顺便说一些注意事项。

    设置进程的 RedirectStandardOutput 重定向输出后,如果不将输出读出来,会卡死此进程

    2020-08-04 03:00

    设置进程的 RedirectStandardOutput 重定向输出后,必须将其读出来。本文带你做一个实验并得出结论。

    三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用

    2020-06-24 01:40

    当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕。通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项目生成的程序集。

    但是,现在 B 项目可能仅仅只是一个工具项目,或者说 A 项目编译之后的程序集并不需要 B,仅仅只是将 B 打到一个包中,那么我们其实需要的仅仅是 B 项目先编译而已。

    本文介绍如何影响项目的编译顺序,而不带来项目实际引用。

    通过设置 sln 解决方案依赖,确保不引用的两个项目之间有明确的编译顺序

    2020-06-24 01:04

    有时在编译解决方案的时候,希望两个项目有明确的编译顺序,而不是自动决定,或者在并行编译的时候同时编译。

    本文介绍通过设置 sln 解决方案依赖来解决编译顺序问题。

    通过 ReferenceOutputAssembly=False 在引用项目时,不额外引入依赖文件

    2020-06-24 00:42

    正常当两个 .NET 项目有引用的时候,会将一个的输出拷贝到另一个的输出目录下。但有时我们只是希望通过引用建立一个依赖关系而已,最终两个项目的输出是独立的。

    通过本文的方法,你可以在 A 项目编译时,确保 B 项目已经编译,而无需引用 B。

    WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome)

    2020-06-23 07:16

    WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。

    本文将使用 WindowChrome 来自定义窗口样式,使其既保留原生窗口样式和交互习惯,又能够具备一定的自定义空间。

    .NET 程序集/项目/包的版本号设置有最大范围,最大不能超过 65534

    2020-06-18 16:05

    试过给 .NET Core 项目设置一个大于 65535 的版本号吗?可能没有,因为设置了会炸!

    Visual Studio 在编译 A 项目时,确保 B 项目已编译

    2020-06-18 00:53

    如果考虑在你的某个项目中安插一个专门用来做编译的项目,这个项目要求最先编译,那么你会考虑用什么方法呢?

    本文讲述在编译 A 项目时,确保 B 项目已编译的方法。

    理解 Visual Studio 解决方案文件格式(.sln)

    2020-06-18 00:34

    一般情况下我们并不需要关心 Visual Studio 解决方案文件格式(.sln),因为 Visual Studio 对解决方案文件的自动修复能力是非常强的。但是如果遇到自动解冲突错误或者编译不通过了,那么此文件还是需要手工修改的。

    本文介绍 Visual Studio 解决方案(.sln)文件的格式。

    从 “x is null 和 x == null” 的区别看 C# 7 模式匹配中常量和 null 的匹配

    2020-06-16 02:39

    尝试过写 if (x is null)?它与 if (x == null) 相比,孰优孰劣呢?

    x is null 还有 x is constant 是 C# 7.0 中引入的模式匹配(Pattern Matching)中的一个小细节。阅读本文将了解 x is constant 和 x == constant 之间的差别,并给出一些代码编写建议。

    如何根据一个绝对文件路径生成一个相对文件路径

    2020-06-15 09:23

    日常的开发中,获取绝对文件路径才是主流吧!连 Path.GetFullPath 这种生成绝对路径的方法都已经成为 .NET Standard 的一部分了。

    然而,生成相对路径依然有用——比如你的配置文件是相对于工作目录的,必须这个路径是输出给用户看的……

    .NET/C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑

    2020-06-13 09:39

    一般来说,大家在需要监听全局消息的时候会考虑 SetWindowsHookEx 这个 API。或者需要处理一些非自己编写的窗口的消息循环的时候,也会考虑使用它。

    如果要知道如何使用这个 API,你可以在网上搜到大量这样的文章/博客/教程/文档,然而大多不会提及使用此 API 时遇到的一些坑。阅读本文,你当然也可以知道应该如何使用这个 API,但同时也能了解如何正确使用以避免一些奇怪的问题。

    WPF / Windows Forms 检测窗口在哪个屏幕

    2020-06-11 10:39

    使用 Windows Forms 自带的 System.Windows.Forms.Screen 类可以从一个窗口句柄获取到对应的屏幕。随后可以使用此 Screen 类获取各种屏幕信息。

    准确判断一个 WPF 控件 / UI 元素当前是否显示在屏幕内

    2020-06-11 09:40

    你的 WPF 窗口是可以拖到屏幕外面去的,所以拉几个元素到屏幕外很正常。你的屏幕可能有多个。你的多个屏幕可能有不同的 DPI。你检测的元素可能带有旋转。

    各种各样奇怪的因素可能影响你检查此元素是否在屏幕内,本文包你一次性解决,绝对准确判断。

    Compare four different file (folder) links on Windows (NTFS hard links, junction points, symbolic links, and well-known shortcuts)

    2020-06-11 01:28

    It is well-known that mklink is a command to create a variety of links on NTFS disk. But if you don’t know much about it or even never hear of it, it doesn’t matter because you know shortcuts at least. This post help you to lean more about mklink and know the differences among the difference command options.

    比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)

    2020-06-11 01:27

    可能有很多小伙伴已经知道通过 mklink 命令来创建 NTFS 磁盘上的各种链接;当然,就算不知道 mklink 的链接,快捷方式应该每个人都知道吧。mklink 的选项有很多种,但你可能在其他文章中难以找到对这些不同选项的不同效果和使用限制的准确和统一描述。本文将介绍 Windows 系统中所有的链接方式,它们的优缺点、使用条件和坑。

    支持 Windows 10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发

    2020-06-10 08:41

    Windows 10 自 1703 开始引入第二代的多屏 DPI 机制(PerMonitor V2),而 WPF 框架可以支持此第二代的多屏 DPI 机制。

    本文将介绍 WPF 框架利用第二代多屏 DPI 机制进行高 DPI 适配的方法。同时,也介绍低版本的 WPF 或者低版本的操作系统下如何做兼容。

    VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware Workstation

    2020-06-10 00:58

    VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware Workstation。有关更多详细信息,请访问 http://www.vmware.com/go/turnoff_CG_DG。

    Visual Studio 智能感知提示里的奇妙行为一览

    2020-06-09 07:52

    本文就是个吐槽,感兴趣一一去报给微软。

    Chrome 窗口全黑了,不怕,有招

    2020-06-08 00:22

    Chrome 的窗口偶尔会出现全黑掉的情况。从轻微的到严重的,本文都有解决方案。

    拿别人的 Program Files 文件夹?别忘了考虑 x86/x64 路径

    2020-06-03 00:13

    要拿适用于自己进程的 Program Files 文件夹很简单,无脑拿就好了。不过,如果涉及到拿其他程序的,那么就会涉及到与其他程序不同架构时路径不同的问题。

    在 .NET 对象和 JSON 互相序列化的时候,枚举类型如何设置成字符串序列化,而不是整型?

    2020-06-02 23:57

    默认情况下,Newtonsoft.Json 库序列化和反序列化 JSON 到 .NET 类型的时候,对于枚举值,使用的是整数。然而,在公开 JSON 格式的 API 时,整数会让 API 不易于理解,也不利于扩展和兼容。

    如何在保留原本所有样式/绑定和用户设置值的情况下,设置和还原 WPF 依赖项属性的值

    2020-06-02 23:13

    WPF 备份某控件的一些属性,做一些神奇的操作,然后再还原这些属性。多么司空见惯的操作呀!然而怎么备份却是值得研究的问题。直接赋值?那一定是因为你没踩到一些坑。

    Unity3D 入门:如何管理 Unity 项目中的 NuGet 包?使用第三方 NuGet 包管理器——NuGetForUnity

    2020-06-01 01:21

    Unity 项目虽然可使用 C# 项目作为脚本,却并没有提供一种类似 NuGet 的第一方包管理器。不过,还是有第三方包管理器可以用,为 C# 脚本应用现有的库提供方便。

    Unity3D 入门:Unity 项目版本管理建议使用的 .gitignore 忽略文件和 .gitattributes 文件(2020年4月更新)

    2020-06-01 01:21

    Unity3D 项目虽然说使用 C# 脚本开发,但毕竟不是 .NET/C# 项目。今天一位小伙伴告诉我说用错了 .gitignore 文件,结果管理仓库时丢了很多重要的文件。

    解决包含 GitHub Actions Workflow 的分支无法推送的问题

    2020-05-26 13:48

    refusing to allow an OAuth App to create or update workflow {0} without workflow scope.

    GitHub 推送失败?试试本文方法。

    • ←
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • →

    © 2014-2020 walterlv, all rights reserved. Powered by: Jekyll Theme by: walterlv Based on Thiago Rossener