一、窗口图标 / 任务栏图标设置
- 关键点,图片类型必须与设置类型相同,以下常用类型
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()
};
注意:两个代码,图片文件均在项目文件夹下,注意路径写法有所不同!!!