优雅地为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应用程序添加图标/
作者
Lkhsss
发布于
2024年8月21日
许可协议