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());
}
📌 一句话原则
用到的才配,配了才知道------窗口设置就像装修,开工前想清楚,开工后改也来得及。遇到具体需求再回来翻这个文件,五分钟搞定。
💡 记住:默认设置已经能跑起来,这些是让你跑得更舒服的"选配"。