1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-26 22:53:14 -04:00

egui_demo_lib: Add arc and pie shapes example

This commit is contained in:
Varphone Wong
2024-04-27 16:39:16 +08:00
parent c667afd839
commit 2a51b72ee0

View File

@@ -20,6 +20,12 @@ pub struct MiscDemoWindow {
dummy_bool: bool,
dummy_usize: usize,
checklist: [bool; 3],
start_angle: f32,
end_angle: f32,
radius: f32,
fill: Color32,
stroke: Stroke,
}
impl Default for MiscDemoWindow {
@@ -36,6 +42,12 @@ impl Default for MiscDemoWindow {
dummy_bool: false,
dummy_usize: 0,
checklist: std::array::from_fn(|i| i == 0),
start_angle: 0.0,
end_angle: std::f32::consts::FRAC_PI_2,
radius: 20.0,
fill: Color32::GREEN,
stroke: Stroke::new(1.0, Color32::RED),
}
}
}
@@ -195,6 +207,49 @@ impl View for MiscDemoWindow {
}
});
});
CollapsingHeader::new("Arc and Pie")
.default_open(false)
.show(ui, |ui| {
ui.vertical(|ui| {
ui.horizontal_wrapped(|ui| {
ui.label("Start angle:");
ui.drag_angle(&mut self.start_angle);
ui.label("End angle:");
ui.drag_angle(&mut self.end_angle);
ui.label("Radius:");
ui.add(egui::Slider::new(&mut self.radius, 0.0..=100.0));
ui.end_row();
ui.label("Fill:");
ui.color_edit_button_srgba(&mut self.fill);
ui.label("Stroke:");
ui.add(&mut self.stroke);
});
ui.separator();
ui.horizontal_wrapped(|ui| {
let r = self.radius;
let size = Vec2::splat(2.0 * r + self.stroke.width + 5.0);
let (rect, _response) = ui.allocate_at_least(size, Sense::hover());
ui.painter().arc(
rect.center(),
r,
self.start_angle,
self.end_angle,
self.stroke,
);
let (rect, _response) = ui.allocate_at_least(size, Sense::hover());
ui.painter().pie(
rect.center(),
r,
self.start_angle,
self.end_angle,
self.fill,
self.stroke,
);
});
ui.separator();
});
});
}
}