【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());
}

📌 一句话原则

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

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

相关推荐
水月wwww21 小时前
Rust的安装与卸载 | windows
开发语言·windows·rust
Mem0rin1 天前
[自用]Rust速通day5:包、crate和use
rust
Ivanqhz1 天前
活跃范围重写(Live Range Rewriting)
开发语言·c++·后端·算法·rust
Roc.Chang1 天前
Rust 入门 - RustRover 新建项目时四种项目模板对比
开发语言·后端·rust
勇敢牛牛_2 天前
【conreg-client】在Rust中使用向Feign一样的远程调用
网络·rust·feign
小杍随笔2 天前
【Rust模块化进阶:深入解析mod.rs的用法与现代实践(1.94版本)】
开发语言·后端·rust
@atweiwei2 天前
Tokio 深度解析:Rust 异步运行时与 Go 协程对比指南
服务器·网络·后端·golang·rust·内存·所有权
福大大架构师每日一题2 天前
2026年3月TIOBE编程语言排行榜,Go语言排名第16,Rust语言排名14。为什么 TIOBE 指数仍然依赖搜索引擎?
开发语言·搜索引擎·rust·tiobe
小杍随笔2 天前
【Rust可见性控制:pub、pub(crate)、pub(super)实战】
开发语言·后端·rust
Source.Liu2 天前
【Iced】core库下angle.rs文件分析
rust·iced