UI (User Interface) / Inline Images

Back to examples View in GitHub

Demonstrates how to display images inline with text.

use bevy::prelude::*;

fn main() {
    let mut app = App::new();
    app.add_plugins(DefaultPlugins).add_systems(Startup, setup);
    app.run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(Camera2d);
    commands.spawn((
        Text::new("[Text]"),
        TextFont::from_font_size(px(40.)),
        Node {
            margin: px(25).all(),
            justify_self: JustifySelf::Center,
            align_self: AlignSelf::Center,
            ..default()
        },
        BackgroundColor(bevy::color::palettes::css::MAROON.into()),
        Outline {
            width: px(2),
            ..default()
        },
        children![
            (
                TextSpan::new("[span before image]"),
                TextFont::from_font_size(px(40)),
            ),
            (InlineImage {
                color: bevy::color::palettes::css::RED.into(),
                image: asset_server.load("branding/bevy_logo_dark.png"),
                height: Some(30.),
                ..default()
            },),
            (
                TextSpan::new("[span between images]"),
                TextFont::from_font_size(px(40.)),
            ),
            (InlineImage {
                color: bevy::color::palettes::css::YELLOW.into(),
                image: asset_server.load("branding/bevy_bird_dark.png"),
                width: Some(30.),
                ..default()
            },),
            (
                TextSpan::new("[span after image]"),
                TextFont::from_font_size(px(40.)),
            ),
        ],
    ));
}