解决部分系统中无法正确渲染 WPF 的问题
设置 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration
为 DWORD
值为 1
参考资料
2025/5/29小于 1 分钟
解决部分系统中无法正确渲染 WPF 的问题
设置 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration
为 DWORD
值为 1
CSF是存储游戏所需要的所有字符串资源的文件。
根据现有的资料[1]描述,它分为两部分,文件头和主体部分。
CSF的文件头的长度是固定的,它有24个字节大小。
offset | type | 描述 |
---|---|---|
0x00 | uint8[4] | 文件的标识符,它永远是 FSC 。 |
0x04 | uint32 | CSF文件的版本。通常情况下,它应该始终为3 。 |
0x08 | uint32 | 标签数量。文件中包含的所有的标签的总数。 |
0x0C | uint32 | 字符串数量。一般情况下,它应该与标签数相同。 |
0x10 | uint32 | 保留。始终为0 。 |
0x14 | uint32 | 使用的语言。这是一个枚举。 |
通过注册表方案可以在应用程序启动时获取到系统主题。
但观察那些 UWP 程序,或者一些 Win32 程序,它们能在运行期间动态的根据系统设置切换应用主题!
根据一些参考资料,Windows 会在切换应用主题时向窗口发送一个事件,只要捕获这个事件,就可以做到感知系统色转变了。
窗口事件都在 WndProc[1] 中处理,所以想要获取窗口事件就需要挂钩子。
系统强调色可通过 DwmGetColorizationColor [1] 实现
通过访问注册表实现
if (Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize")?.GetValue("AppsUseLightTheme") is not int or > 0)
{
// 浅色模式
}
else
{
// 深色模式
}