pub struct Image<'a> {
source: ImageSource<'a>,
texture_options: TextureOptions,
image_options: ImageOptions,
sense: Sense,
size: ImageSize,
pub(crate) show_loading_spinner: Option<bool>,
}Expand description
A widget which displays an image.
The task of actually loading the image is deferred to when the Image is added to the Ui,
and how it is loaded depends on the provided ImageSource:
ImageSource::Uriwill load the image using the asynchronous loading process.ImageSource::Byteswill also load the image using the asynchronous loading process, but with lower latency.ImageSource::Texturewill use the provided texture.
See load for more information.
§Examples
// Using it in a layout:
ui.add(
egui::Image::new(egui::include_image!("../../assets/ferris.png"))
.rounding(5.0)
);// Using it just to paint:
egui::Image::new(egui::include_image!("../../assets/ferris.png"))
.rounding(5.0)
.tint(egui::Color32::LIGHT_BLUE)
.paint_at(ui, rect);Fields§
§source: ImageSource<'a>§texture_options: TextureOptions§image_options: ImageOptions§sense: Sense§size: ImageSize§show_loading_spinner: Option<bool>Implementations§
§impl<'a> Image<'a>
impl<'a> Image<'a>
pub fn new(source: impl Into<ImageSource<'a>>) -> Image<'a>
pub fn new(source: impl Into<ImageSource<'a>>) -> Image<'a>
Load the image from some source.
pub fn from_uri(uri: impl Into<Cow<'a, str>>) -> Image<'a>
pub fn from_uri(uri: impl Into<Cow<'a, str>>) -> Image<'a>
Load the image from a URI.
See ImageSource::Uri.
pub fn from_texture(texture: impl Into<SizedTexture>) -> Image<'a>
pub fn from_texture(texture: impl Into<SizedTexture>) -> Image<'a>
Load the image from an existing texture.
See ImageSource::Texture.
pub fn from_bytes(
uri: impl Into<Cow<'static, str>>,
bytes: impl Into<Bytes>,
) -> Image<'a>
pub fn from_bytes( uri: impl Into<Cow<'static, str>>, bytes: impl Into<Bytes>, ) -> Image<'a>
Load the image from some raw bytes.
For better error messages, use the bytes:// prefix for the URI.
See ImageSource::Bytes.
pub fn texture_options(self, texture_options: TextureOptions) -> Image<'a>
pub fn texture_options(self, texture_options: TextureOptions) -> Image<'a>
Texture options used when creating the texture.
pub fn max_width(self, width: f32) -> Image<'a>
pub fn max_width(self, width: f32) -> Image<'a>
Set the max width of the image.
No matter what the image is scaled to, it will never exceed this limit.
pub fn max_height(self, height: f32) -> Image<'a>
pub fn max_height(self, height: f32) -> Image<'a>
Set the max height of the image.
No matter what the image is scaled to, it will never exceed this limit.
pub fn max_size(self, size: Vec2) -> Image<'a>
pub fn max_size(self, size: Vec2) -> Image<'a>
Set the max size of the image.
No matter what the image is scaled to, it will never exceed this limit.
pub fn maintain_aspect_ratio(self, value: bool) -> Image<'a>
pub fn maintain_aspect_ratio(self, value: bool) -> Image<'a>
Whether or not the ImageFit should maintain the image’s original aspect ratio.
pub fn fit_to_original_size(self, scale: f32) -> Image<'a>
pub fn fit_to_original_size(self, scale: f32) -> Image<'a>
Fit the image to its original size with some scaling.
This will cause the image to overflow if it is larger than the available space.
If Image::max_size is set, this is guaranteed to never exceed that limit.
pub fn fit_to_exact_size(self, size: Vec2) -> Image<'a>
pub fn fit_to_exact_size(self, size: Vec2) -> Image<'a>
Fit the image to an exact size.
If Image::max_size is set, this is guaranteed to never exceed that limit.
pub fn fit_to_fraction(self, fraction: Vec2) -> Image<'a>
pub fn fit_to_fraction(self, fraction: Vec2) -> Image<'a>
Fit the image to a fraction of the available space.
If Image::max_size is set, this is guaranteed to never exceed that limit.
pub fn shrink_to_fit(self) -> Image<'a>
pub fn shrink_to_fit(self) -> Image<'a>
Fit the image to 100% of its available size, shrinking it if necessary.
This is a shorthand for Image::fit_to_fraction with 1.0 for both width and height.
If Image::max_size is set, this is guaranteed to never exceed that limit.
pub fn uv(self, uv: impl Into<Rect>) -> Image<'a>
pub fn uv(self, uv: impl Into<Rect>) -> Image<'a>
Select UV range. Default is (0,0) in top-left, (1,1) bottom right.
pub fn bg_fill(self, bg_fill: impl Into<Color32>) -> Image<'a>
pub fn bg_fill(self, bg_fill: impl Into<Color32>) -> Image<'a>
A solid color to put behind the image. Useful for transparent images.
pub fn tint(self, tint: impl Into<Color32>) -> Image<'a>
pub fn tint(self, tint: impl Into<Color32>) -> Image<'a>
Multiply image color with this. Default is WHITE (no tint).
pub fn rotate(self, angle: f32, origin: Vec2) -> Image<'a>
pub fn rotate(self, angle: f32, origin: Vec2) -> Image<'a>
Rotate the image about an origin by some angle
Positive angle is clockwise. Origin is a vector in normalized UV space ((0,0) in top-left, (1,1) bottom right).
To rotate about the center you can pass Vec2::splat(0.5) as the origin.
Due to limitations in the current implementation, this will turn off rounding of the image.
pub fn rounding(self, rounding: impl Into<Rounding>) -> Image<'a>
pub fn rounding(self, rounding: impl Into<Rounding>) -> Image<'a>
Round the corners of the image.
The default is no rounding (Rounding::ZERO).
Due to limitations in the current implementation, this will turn off any rotation of the image.
pub fn show_loading_spinner(self, show: bool) -> Image<'a>
pub fn show_loading_spinner(self, show: bool) -> Image<'a>
Show a spinner when the image is loading.
By default this uses the value of Visuals::image_loading_spinners.
§impl<'a> Image<'a>
impl<'a> Image<'a>
pub fn calc_size(
&self,
available_size: Vec2,
original_image_size: Option<Vec2>,
) -> Vec2
pub fn calc_size( &self, available_size: Vec2, original_image_size: Option<Vec2>, ) -> Vec2
Returns the size the image will occupy in the final UI.
pub fn load_and_calc_size( &self, ui: &mut Ui, available_size: Vec2, ) -> Option<Vec2>
pub fn size(&self) -> Option<Vec2>
pub fn image_options(&self) -> &ImageOptions
pub fn source(&self) -> &ImageSource<'a>
pub fn load_for_size(
&self,
ctx: &Context,
available_size: Vec2,
) -> Result<TexturePoll, LoadError>
pub fn load_for_size( &self, ctx: &Context, available_size: Vec2, ) -> Result<TexturePoll, LoadError>
Load the image from its Image::source, returning the resulting SizedTexture.
The available_size is used as a hint when e.g. rendering an svg.
§Errors
May fail if they underlying Context::try_load_texture call fails.
Trait Implementations§
§impl<'a, T> From<T> for Image<'a>where
T: Into<ImageSource<'a>>,
impl<'a, T> From<T> for Image<'a>where
T: Into<ImageSource<'a>>,
Auto Trait Implementations§
impl<'a> Freeze for Image<'a>
impl<'a> RefUnwindSafe for Image<'a>
impl<'a> Send for Image<'a>
impl<'a> Sync for Image<'a>
impl<'a> Unpin for Image<'a>
impl<'a> UnwindSafe for Image<'a>
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T [ShaderType] for self. When used in [AsBindGroup]
derives, it is safe to assume that all images in self exist.§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoArcAny for T
impl<T> IntoArcAny for T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.