一、窗口图标 / 任务栏图标设置
- 关键点,图片类型必须与设置类型相同,以下常用类型
image::ImageFormat::Ico
image::ImageFormat::Jpeg
image::ImageFormat::Png
image::ImageFormat::Gif
image::ImageFormat::WebP
image::ImageFormat::Bmp
- 图片宽高要相同,代码中要写实际的图片宽高,否则显示可能错乱
use eframe::egui;
use egui::viewport::IconData;
use image;
use std::io::Cursor;
use std::sync::{Arc, Mutex};
use std::{fs, thread};
let icon_data = include_bytes!("../c_128.ico");
let img = image::load(Cursor::new(icon_data), image::ImageFormat::Ico).unwrap().to_rgba8();
let mut icon = IconData {rgba: img.into_raw().to_vec(),width: 128,height: 128,
};
let options = eframe::NativeOptions {viewport: egui::ViewportBuilder::default().with_icon(Arc::new(icon)),..Default::default()
};
二、方法整合
fn load_icon_rgba(pathstr: &str, width: u32, height: u32) -> IconData {let icon_data = fs::read(pathstr).unwrap();let image = image::load(Cursor::new(icon_data), image::ImageFormat::Png).unwrap().to_rgba8(); IconData { rgba: image.into_raw().to_vec(), width, height, }
}let rgba = load_icon_rgba("./c_800.png", 800, 800);
let options = eframe::NativeOptions {viewport: egui::ViewportBuilder::default().with_icon(rgba) ..Default::default()
};
注意:两个代码,图片文件均在项目文件夹下,注意路径写法有所不同!!!