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;