c# wpf background-image

Cambiar la imagen de fondo de la ventana de WPF en código C#



background-image (6)

¿Qué pasa con esto?

new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), "Images/icon.png")))

o alternativamente, esto:

this.Background = new ImageBrush(new BitmapImage(new Uri(@"pack://application:,,,/myapp;component/Images/icon.png")));

Tengo un par de imágenes configuradas como recursos de la aplicación.

Cuando se inicia mi aplicación, el fondo de la ventana principal se establece a través de XAML:

<Window.Background> <ImageBrush ImageSource="/myapp;component/Images/icon.png" /> </Window.Background>

Si ocurre un evento determinado, me gustaría cambiar este fondo a otro recurso ( "/myapp;component/Images/icon_gray.png" ).

He intentado usar dos constantes:

private static readonly ImageBrush ENABLED_BACKGROUND = new ImageBrush(new BitmapImage(new Uri("/myapp;component/Images/icon.png"))); private static readonly ImageBrush DISABLED_BACKGROUND = new ImageBrush(new BitmapImage(new Uri("/myapp;component/Images/icon_gray.png")));

... pero, naturalmente, obtengo una excepción con URI no válido.

¿Hay una forma sencilla de cambiar la imagen de fondo (a través de this.Background = ... ) de una ventana de WPF usando el paquete Uri o el recurso (es decir, Myapp.Properties.Resources.icon )?


Acabo de colocar una imagen en "d drive -> Data -> IMG" . El nombre de la imagen es x.jpg :

Y en c # tipo de código

ImageBrush myBrush = new ImageBrush(); myBrush.ImageSource = new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), "D://Data//IMG//x.jpg"));

(por favor ponga doble barra entre la ruta)

this.Background = myBrush;

finalmente tengo el fondo ..


Aquí la versión XAML

<Window.Background> <ImageBrush> <ImageBrush.ImageSource> <BitmapImage UriSource="//your source .."/> </ImageBrush.ImageSource> </ImageBrush> </Window.Background>


El problema es la forma en que lo usas en el código. Solo prueba el siguiente código

public partial class MainView : Window { public MainView() { InitializeComponent(); ImageBrush myBrush = new ImageBrush(); myBrush.ImageSource = new BitmapImage(new Uri("pack://application:,,,/icon.jpg", UriKind.Absolute)); this.Background = myBrush; } }

Puedes encontrar más detalles sobre esto en
http://msdn.microsoft.com/en-us/library/aa970069.aspx


He estado intentando todas las respuestas aquí sin éxito. Esta es la forma más sencilla de hacerlo con ms-appx.

ImageBrush myBrush = new ImageBrush(); Image image = new Image(); image.Source = new BitmapImage(new Uri(@"ms-appx:///Assets/background.jpg")); myBrush.ImageSource = image.Source; TheGrid.Background = myBrush;

La carpeta de activos se encuentra en el primer nivel de mi proyecto, así que asegúrese de cambiar la ruta según sea conveniente.


Uri resourceUri = new Uri(@"/cCleaner;component/Images/cleanerblack.png", UriKind.Relative); StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri); BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream); var brush = new ImageBrush(); brush.ImageSource = temp; frame8.Background = brush;