🚀 xlui:

xlui是一个用Rust语言,基于winit和wgpu实现的2D
GUI库。目标是利用Rust语言原生构建GUI、最小第三方依赖,体积比winit+wgpu少30%左右,简单易用, 在保证性能的前提下尽量减少CPU的开销。
xlui的目标
| 适配情况 |
目标系统 |
平台UI |
备注 |
| ✅ |
Linux |
x11,wayland |
x11为原生窗口 |
| ✅ |
Windows |
10,11 |
原生窗口 |
| ⬜️ |
MacOS |
- |
winit |
| ⬜️ |
Android |
11+ |
winit |
| ⬜️ |
Web |
Wasm |
winit |
| ❌ |
HarmonyOS |
暂无适配计划 |
|
🎯控件(目前可用)

快速开始xlui
xlui的最小运行示例
use xlui::frame::App;
use xlui::*;
use xlui::ui::Ui;
use xlui::frame::context::Context;
fn main() {
let app = XlUiApp::new();
app.run();
}
struct XlUiApp {
label: Label,
count: i32,
}
impl XlUiApp {
fn new() -> XlUiApp {
XlUiApp {
label: Label::new("hello").width(100.0),
count: 0,
}
}
fn add(&mut self, _: &mut Button, ui: &mut Ui) {
self.count += 1;
self.label.set_text(format!("count: {}", self.count));
self.label.update(ui);
}
fn reduce(&mut self, _: &mut Button, ui: &mut Ui) {
self.count -= 1;
self.label.set_text(format!("count: {}", self.count));
self.label.update(ui);
}
}
impl App for XlUiApp {
fn draw(&mut self, ui: &mut Ui) {
ui.add_mut(&mut self.label);
ui.horizontal(|ui| {
ui.add(Button::new("+".to_string()).width(30.0).height(30.0).connect(Self::add));
ui.add(Button::new("-".to_string()).width(30.0).height(30.0).connect(Self::reduce));
});
}
fn update(&mut self, ui: &mut Ui) {
self.label.update(ui);
}
fn redraw(&mut self, ui: &mut Ui) {
self.label.redraw(ui);
}
fn window_attributes(&self) -> WindowAttribute {
WindowAttribute {
inner_size: (800, 600).into(),
..Default::default()
}
}
}
详细用法,参考Wiki