【egui】[特殊字符] 窗口配置小抄:eframe::NativeOptions

NativeOptions 结构体就是窗口的设置面板 ------想调整窗口大小、图标、行为?都在这。不需要背,用到时回来翻就行

📋 一图看懂所有设置

rust 复制代码
pub struct NativeOptions {
    // 🎨 长得啥样
    pub always_on_top: bool,        // 置顶显示?
    pub maximized: bool,            // 启动时最大化?
    pub decorated: bool,            // 显示标题栏和边框?
    pub fullscreen: bool,           // 全屏模式?
    pub transparent: bool,          // 透明窗口?
    pub mouse_passthrough: bool,    // 鼠标穿透(做悬浮窗用)?
    pub icon_data: Option<IconData>,// 窗口图标(默认是个"e")

    // 📏 多大、在哪儿
    pub initial_window_pos: Option<Pos2>,   // 初始位置
    pub initial_window_size: Option<Vec2>,  // 初始大小
    pub min_window_size: Option<Vec2>,      // 最小尺寸
    pub max_window_size: Option<Vec2>,      // 最大尺寸
    pub resizable: bool,            // 能调整大小吗?
    pub centered: bool,             // 居中显示?(Wayland 不行)

    // 🎮 用起来咋样
    pub drag_and_drop_support: bool,    // 支持拖放文件?(Windows)
    pub active: bool,                    // 启动时获得焦点?
    pub vsync: bool,                      // 垂直同步(防画面撕裂)

    // ⚙️ 渲染相关(一般不动)
    pub multisampling: u16,               // 抗锯齿级别
    pub depth_buffer: u8,                 // 深度缓冲(3D才需要)
    pub stencil_buffer: u8,               // 模板缓冲(3D才需要)
    pub hardware_acceleration: HardwareAcceleration, // 硬件加速偏好
    pub renderer: Renderer,                // 用 glow 还是 wgpu
    pub wgpu_options: WgpuConfiguration,   // wgpu 详细设置

    // 🌗 主题相关
    pub follow_system_theme: bool,  // 跟随系统深色/浅色模式?
    pub default_theme: Theme,       // 默认主题(Dark/Light)

    // 🔄 生命周期
    pub run_and_return: bool,       // 窗口关了后程序继续运行?
    pub event_loop_builder: Option<EventLoopBuilderHook>, // 事件循环钩子
    pub shader_version: Option<ShaderVersion>, // OpenGL 版本兼容

    // 💾 数据存储
    pub app_id: Option<String>,     // 应用ID(决定配置文件放哪)
}

🎯 常用场景速查

1. 最基础:固定大小窗口

rust 复制代码
let options = eframe::NativeOptions {
    initial_window_size: Some(egui::vec2(800.0, 600.0)),
    resizable: false,  // 不让用户拖大拖小
    ..Default::default()
};

2. 全屏应用(比如游戏、演示)

rust 复制代码
let options = eframe::NativeOptions {
    fullscreen: true,
    ..Default::default()
};

3. 置顶工具(比如悬浮计时器)

rust 复制代码
let options = eframe::NativeOptions {
    always_on_top: true,
    mouse_passthrough: true,  // 鼠标穿透,点击下面的窗口
    decorated: false,         // 无边框,更清爽
    ..Default::default()
};

4. 带图标的正式应用

rust 复制代码
let options = eframe::NativeOptions {
    icon_data: Some(load_my_icon()),  // 从 PNG 加载
    app_id: Some("com.example.myapp".to_string()), // 数据存哪
    ..Default::default()
};

💾 app_id:你的数据存在哪

平台 存储路径
Linux /home/用户名/.local/share/你的APP_ID
macOS /Users/用户名/Library/Application Support/你的APP_ID
Windows C:\Users\用户名\AppData\Roaming\你的APP_ID

📌 Wayland 用户注意app_id 还影响图标显示和窗口分组,记得设!

🧪 调试 vs 发布

开发时用默认设置就行,发布前再调这些:

rust 复制代码
let mut options = eframe::NativeOptions::default();

// 正式发布时
if cfg!(not(debug_assertions)) {
    options.icon_data = Some(load_my_icon());
    options.app_id = Some("com.myapp.prod".to_string());
}

📌 一句话原则

用到的才配,配了才知道------窗口设置就像装修,开工前想清楚,开工后改也来得及。遇到具体需求再回来翻这个文件,五分钟搞定。

💡 记住:默认设置已经能跑起来,这些是让你跑得更舒服的"选配"。

相关推荐
Hello.Reader2 小时前
Tauri 项目结构前端壳 + Rust 内核,怎么协作、怎么构建、怎么扩展
开发语言·前端·rust
Source.Liu2 小时前
【egui】[特殊字符]简单、快速、跨平台的 Rust GUI 库
rust·egui
Source.Liu1 天前
【rust-i18n】Cargo.toml 配置文件解析
rust
班公湖里洗过脚1 天前
Rust操作Josn数据及工作目录下多个应用程序维护示例
rust
Source.Liu1 天前
【rust-i18n】readme.md文件
rust·rust-i18n
锅包一切2 天前
在蓝桥杯边练边学Rust:2.原生类型
开发语言·学习·蓝桥杯·rust
@atweiwei2 天前
Rust 实现 LangChain
开发语言·算法·rust·langchain·llm·agent·rag
Hello.Reader2 天前
Tauri 开发环境 Prerequisites 桌面 + 移动端)
rust·tauri
Source.Liu2 天前
【rust-i18n】简介
rust·rust-i18n