2010-10-24 14 views
25

Uygulama kaynakları olarak yapılandırılmış birkaç Görüntü var. Başvurum başladığındaC# kodunda WPF penceresi arka plan resmini değiştirin

, ana pencerenin arka plan XAML aracılığıyla ayarlanır: Belirli bir olay meydana gelirse

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

, ben başka bir kaynak ("/myapp;component/Images/icon_gray.png") bu arka planı değiştirmek istiyorum.

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"))); 

... ama doğal olarak, Geçersiz URI ile bir istisna olsun:

İki sabitleri kullanılarak denedim.

Bir UPF penceresinin arka plan görüntüsünü (this.Background = ... aracılığıyla) ya paket Uri'yi veya kaynağı (örn .: Myapp.Properties.Resources.icon) kullanarak değiştirmek için basit bir yol var mı?

Bu konuda

cevap

34

Ne:

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

veya alternatif olarak bu:

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

İkinci kullanıldı, çünkü sabit bir sabit belirliyordum. Teşekkürler! – biasedbit

7

yılında Xaml Sürüm

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

bu ilgili daha fazla ayrıntı bulabilirsiniz

ben sadece "d drive-- bir görüntü yer aşağıdaki kodu

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; 
    } 
} 
deneyin > Veri -> IMG "
. resim adı x.jpg geçerli:

Ve C# kodu türüne

ImageBrush myBrush = new ImageBrush(); 

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

(yol arasına çift eğik çizgi koyun lütfen)

this.Background = myBrush; 

nihayet ben var arkaplan .. enter image description here

0
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; 
0

Buradaki tüm cevapları hiçbir şekilde denemiyorum. İşte

 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; 

Varlıklar klasörü projemin ilk seviye olan ms-appx ile bunu, bu nedenle uygun olarak yolunu değiştirmek için emin olmak için en basit yoldur.

İlgili konular