我只是对RUST语言和ICED crate感兴趣,坚持如何将图片设置为GUI背景。
我做了一个基本的登录GUI,如下所示:
现在我想把黑色背景改成这样的背景:
这是我的登录代码-我在这个项目中使用ICED:
pub fn main() -> Result<(), iced::Error> {
let mut settings = Settings::default();
settings.window.size = (400, 300);
Login::run(settings)
}
struct Login {
username: String,
password: String,
answer: String,
}
#[derive(Debug, Clone)]
enum Message
{
Loginbutton,
Username(String),
Password(String),
}
impl Sandbox for Login {
type Message = Message;
fn new() -> Login {
Login {
username: String::new(),
password: String::new(),
answer: "".to_string(),
}
}
fn title(&self) -> String {
String::from("Login")
}
fn update(&mut self, message: self::Message)
{
match message
{
Message::Loginbutton => {},
Message::Username(user_val) => self.username = user_val.parse().unwrap(),
Message::Password(password_val) => self.password = password_val.parse().unwrap(),
}
}
这里是我的布局,我设置主题为黑暗,现在我想改变黑暗的背景,一些图片:
fn view(&self) -> Element<Self::Message> {
Column::new()
.padding(20)
.spacing(20)
.push(Text::new("Username").style(color!(0xFB0000)))
.push(TextInput::new("Enter your username",&self.username ).on_input(Message::Username))
.push(Text::new("Password"))
.push(TextInput::new("Enter your password",&self.password ).on_input(Message::Password))
.push(Button::new(Text::new("Login".to_string())).on_press(Message::Loginbutton).style(iced::theme::Button::Secondary))
.push(Text::new(&self.answer))
.into()
}
fn theme(&self) -> iced::Theme {
Theme::Dark
}
}
}
1条答案
按热度按时间vwhgwdsa1#
可悲的是,这不是很容易做到的时刻,因为它目前是不可能的,
1.使用
Image
作为Background
(但是如果你只需要一个 Gradient 就足够了)1.将小部件堆叠在彼此之上
然而,
Overlay
特性在原则上确实使这成为可能。下面是如何实现以下布局的完整示例(基于OP和
iced
s' modal示例中的代码):用于加载图像的文件夹结构:
Cargo.toml
的特点:main.rs
中的代码: