mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
Support images with rounded corners (#3257)
* Add `Rect::ZERO` * Add `Rounding::ZERO` * Add `RectShape::new` * Add `Image::rounding` to support images with rounded corners
This commit is contained in:
BIN
examples/retained_image/src/crab.png
Normal file
BIN
examples/retained_image/src/crab.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
@@ -6,7 +6,7 @@ use egui_extras::RetainedImage;
|
||||
fn main() -> Result<(), eframe::Error> {
|
||||
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
||||
let options = eframe::NativeOptions {
|
||||
initial_window_size: Some(egui::vec2(300.0, 900.0)),
|
||||
initial_window_size: Some(egui::vec2(400.0, 1000.0)),
|
||||
..Default::default()
|
||||
};
|
||||
eframe::run_native(
|
||||
@@ -18,48 +18,66 @@ fn main() -> Result<(), eframe::Error> {
|
||||
|
||||
struct MyApp {
|
||||
image: RetainedImage,
|
||||
rounding: f32,
|
||||
tint: egui::Color32,
|
||||
}
|
||||
|
||||
impl Default for MyApp {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
image: RetainedImage::from_image_bytes(
|
||||
"rust-logo-256x256.png",
|
||||
include_bytes!("rust-logo-256x256.png"),
|
||||
)
|
||||
.unwrap(),
|
||||
tint: egui::Color32::from_rgb(255, 0, 255),
|
||||
// crab image is CC0, found on https://stocksnap.io/search/crab
|
||||
image: RetainedImage::from_image_bytes("crab.png", include_bytes!("crab.png")).unwrap(),
|
||||
rounding: 32.0,
|
||||
tint: egui::Color32::from_rgb(100, 200, 200),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl eframe::App for MyApp {
|
||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||
let Self {
|
||||
image,
|
||||
rounding,
|
||||
tint,
|
||||
} = self;
|
||||
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
ui.heading("This is an image:");
|
||||
self.image.show(ui);
|
||||
image.show(ui);
|
||||
|
||||
ui.heading("This is a rotated image with a tint:");
|
||||
ui.add_space(32.0);
|
||||
|
||||
ui.heading("This is a tinted image with rounded corners:");
|
||||
ui.add(
|
||||
egui::Image::new(self.image.texture_id(ctx), self.image.size_vec2())
|
||||
.rotate(45.0_f32.to_radians(), egui::Vec2::splat(0.5))
|
||||
.tint(self.tint),
|
||||
egui::Image::new(image.texture_id(ctx), image.size_vec2())
|
||||
.tint(*tint)
|
||||
.rounding(*rounding),
|
||||
);
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Tint:");
|
||||
egui::color_picker::color_edit_button_srgba(
|
||||
ui,
|
||||
&mut self.tint,
|
||||
tint,
|
||||
egui::color_picker::Alpha::BlendOrAdditive,
|
||||
);
|
||||
|
||||
ui.add_space(16.0);
|
||||
|
||||
ui.label("Rounding:");
|
||||
ui.add(
|
||||
egui::DragValue::new(rounding)
|
||||
.speed(1.0)
|
||||
.clamp_range(0.0..=0.5 * image.size_vec2().min_elem()),
|
||||
);
|
||||
});
|
||||
|
||||
ui.add_space(32.0);
|
||||
|
||||
ui.heading("This is an image you can click:");
|
||||
ui.add(egui::ImageButton::new(
|
||||
self.image.texture_id(ctx),
|
||||
self.image.size_vec2(),
|
||||
image.texture_id(ctx),
|
||||
image.size_vec2(),
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB |
@@ -1 +0,0 @@
|
||||
Rust logo by Mozilla, from https://github.com/rust-lang/rust-artwork
|
||||
Reference in New Issue
Block a user