mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 13:50:04 -04:00
egui_demo_lib: Add arc and pie shapes example
This commit is contained in:
@@ -20,6 +20,12 @@ pub struct MiscDemoWindow {
|
|||||||
dummy_bool: bool,
|
dummy_bool: bool,
|
||||||
dummy_usize: usize,
|
dummy_usize: usize,
|
||||||
checklist: [bool; 3],
|
checklist: [bool; 3],
|
||||||
|
|
||||||
|
start_angle: f32,
|
||||||
|
end_angle: f32,
|
||||||
|
radius: f32,
|
||||||
|
fill: Color32,
|
||||||
|
stroke: Stroke,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for MiscDemoWindow {
|
impl Default for MiscDemoWindow {
|
||||||
@@ -36,6 +42,12 @@ impl Default for MiscDemoWindow {
|
|||||||
dummy_bool: false,
|
dummy_bool: false,
|
||||||
dummy_usize: 0,
|
dummy_usize: 0,
|
||||||
checklist: std::array::from_fn(|i| i == 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();
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user