优雅地为iced应用程序添加图标
设置图标
图标分为两种。
一种是显示在应用左上角异界任务栏上的图标。
一种是系统读取文件时显示的图标(本文方法仅适用于Windows)。
首先准备好一个符合windows规范的icon文件(本文以icon.ico为例),放在根目录中
在iced中设置应用内和任务栏图标
其他人多使用icon::from_rgba()方法,配合image库读取图片来为程序添加图标,但其实iced为大家提供了imagefeature来直接一步到位。
使用以下命令启用iced的imagefeature:
cargo add iced -F image然后直接设置一手iced::window::icon::from_file_data(),然后用include_bytes宏直接读取图片数据,然后设置window的设置icon。
图片不能是矢量图(
.svg),但是位图(.png,.jpg,.ico…)应该都可以。
图片的位置时相对于main.rs文件的。所以当icon文件放在项目根目录时,相对路径应为../icon.png
同时``iced::window::icon还有一个from_file方法,可以动态读取图标。而from_file_data`主要是为了在编译时就硬编码好图标。
设置代码如下:
use iced::window::{icon, Icon};
fn main() -> iced::Result {
App::run(Settings{
window:iced::window::Settings{
icon:Some(Icon::from(icon::from_file_data(include_bytes!("../icon.png"),None).unwrap())),
..Default::default()
},
..Default::default()
})
}设置程序文件图标
首先添加编译脚本依赖
以下是Cargo.toml的内容
[package]
build = "src/build.rs"
[build-dependencies]
winres = "*"然后在src文件夹中添加一个叫build.rs文件
文件内容如下
use winres;
fn main() {
let mut res = winres::WindowsResource::new();
res.set_icon("icon.ico");
res.compile().unwrap();
}winres的图片相对路径是项目根目录,所以
icon.ico即可。
还可以在Cargo.toml中使用[package.metadata.winres]来设置应用的信息。具体请看MSDN
最后一步!
熟悉的构建环节!
cargo build -r优雅地为iced应用程序添加图标
https://lkhsss.github.io/编程/Rust/优雅地为iced应用程序添加图标/