返回

如何为 Tauri 应用程序窗口添加圆角并启用窗口活力?

windows

为 Tauri 应用程序窗口添加圆角并启用窗口活力

在构建现代、吸引人的桌面应用程序时,圆角窗口已成为一种流行且令人向往的设计元素。但是,当启用 Windows 特有的窗口活力功能时,为 Tauri 应用程序窗口添加圆角可能会成为一个挑战。

窗口活力:美丽的模糊背景,但有代价

窗口活力通过允许应用程序以模糊背景显示其窗口,提供令人印象深刻的视觉效果。然而,这种增强型美学有一个代价:它会接管窗口的形状管理。传统的 CSS 或 HTML 方法无法在此场景中使用。

通过非矩形区域解决难题

为了克服这一限制,我们可以转向一种创新的解决方案:非矩形区域 (Rgn)。Rgn 是用于定义窗口形状的图形对象。通过创建具有圆角的 Rgn,我们可以有效地模拟圆角窗口。

步骤指南

以下步骤详细介绍了如何使用 Rgn 在启用窗口活力的情况下为 Tauri 应用程序窗口添加圆角:

  1. 创建非矩形区域: 使用 CreateRoundRectRgn 函数创建一个 Rgn,指定矩形区域的坐标和圆角半径。
  2. 设置窗口区域: 使用 SetWindowRgn 函数将创建的 Rgn 设置为窗口的区域。
  3. 启用窗口活力: 使用 DwmEnableBlurBehindWindow 函数启用窗口活力。提供一个包含 Rgn 作为模糊区域的 DWM_BLURBEHIND 结构。

代码示例

以下 Rust 代码片段展示了如何实现上述步骤:

use tauri::{CustomMenuItem, Menu, Submenu, WindowMenu};

fn main() {
    tauri::Builder::default()
        .menu(Menu::new()
            .add_submenu(Submenu::new("Window")
                .add_item(CustomMenuItem::new("Toggle Round Corners", |_window| {
                    // ...代码块...
                }))
            )
        )
        .run(tauri::generate_context!())
        .expect("failed to run app");
}

结论

通过利用非矩形区域,我们解锁了在启用窗口活力的情况下为 Tauri 应用程序窗口添加圆角的能力。这种技术使我们能够创建具有美观、现代外观的应用程序,从而提升用户的视觉体验。

常见问题解答

  1. 为什么圆角窗口在启用窗口活力时无法使用 CSS 或 HTML?
    因为窗口活力接管了窗口形状的管理,因此传统的 CSS 或 HTML 方法无法在该场景中使用。

  2. 使用非矩形区域会不会影响窗口性能?
    通常情况下,使用 Rgn 对窗口性能的影响可以忽略不计。

  3. 是否可以使用其他方法来为 Tauri 窗口添加圆角?
    没有其他公开的方法来在启用窗口活力的情况下添加圆角。

  4. 圆角半径可以动态调整吗?
    是的,可以通过更新 Rgn 和窗口区域来动态调整圆角半径。

  5. 这种方法是否适用于所有版本的 Windows?
    该方法适用于支持窗口活力的 Windows 版本,例如 Windows 10 及更高版本。