2010-09-24 6 views
28

tôi cần phải đặt nguồn hình ảnh động, xin lưu ý hình ảnh của tôi là ở nơi nào đó trên mạng, đây là mã của tôiThay đổi nguồn hình ảnh trong mã đằng sau - WPF

BitmapImage logo = new BitmapImage(); 
logo.BeginInit(); 
logo.UriSource = new Uri(@"pack://application:,,,\\myserver\\folder1\\Customer Data\\sample.png"); 
logo.EndInit(); // Getting the exception here 
ImageViewer1.Source = logo; 

Ngoại lệ:

Các Tiền tố URI không được nhận dạng

Trả lời

47

Bạn chỉ cần một dòng:

ImageViewer1.Source = new BitmapImage(new Uri(@"\myserver\folder1\Customer Data\sample.png")); 
+5

Bạn không cần phải thoát khỏi dấu xồ nguợc nếu bạn sử dụng một chuỗi nguyên văn –

4

Cú pháp gói bạn đang sử dụng ở đây là một hình ảnh có chứa Tài nguyên trong ứng dụng của bạn, không phải cho tệp lỏng trong hệ thống tệp.

Bạn chỉ đơn giản là muốn vượt qua con đường thực tế để các UriSource:

logo.UriSource = new Uri(@"\\myserver\folder1\Customer Data\sample.png"); 
0

Bạn đang hoàn toàn sai! Tại sao? Bởi vì tất cả bạn cần là mã này để làm việc:

(ảnh Xem)/C# Img là: hộp hình ảnh của bạn

Giữ điều này như là, mà không cần thay đổi ("ms-phụ lục: ///) này là mã không phải tên ứng dụng của bạn Hình ảnh là thư mục trong dự án của bạn, bạn có thể thay đổi nó dog.png là tệp của bạn trong thư mục của bạn, cũng như tôi làm thư mục 'Hình ảnh' và tệp 'dog.png' : "ms-phụ lục: ///Images/dog.png" và mã của tôi:


private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     img.Source = new BitmapImage(new Uri("ms-appx:///Images/dog.png")); 
    } 
+7

Mã này hoạt động cho các cửa sổ RT và Windows Phone, không WPF – Ali

+1

@AymanSammoudi này sẽ không làm việc cho WPF –

51

Không có giải pháp nào ở trên phù hợp với tôi. Nhưng điều này đã làm:

myImage.Source = new BitmapImage(new Uri(@"/Images/foo.png", UriKind.Relative)); 
+4

+1 vì đã gần đây. Đó cũng là điều duy nhất làm việc cho tôi. –

+0

! tuyệt vời và làm việc –

+2

Lưu ý rằng _doesn't_ này hoạt động trong UWP, vì UWP dường như chỉ chấp nhận URI tuyệt đối. Đây là cách tôi làm điều đó: 'myImage.Source = new BitmapImage (new Uri (new Uri (Directory.GetCurrentDirectory(), UriKind.Absolute), new Uri (@"/Images/foo.png ", UriKind.Relative)))) ; ' – Thought

2

Không có phương pháp nào phù hợp với tôi khi tôi cần kéo hình ảnh từ thư mục thay vì thêm hình ảnh vào ứng dụng. Mã dưới đây làm việc:

TestImage.Source = GetImage("/Content/Images/test.png") 

private static BitmapImage GetImage(string imageUri) 
     { 
      var bitmapImage = new BitmapImage(); 
      bitmapImage.BeginInit(); 
      bitmapImage.UriSource = new Uri("pack://siteoforigin:,,,/" + imageUri,    UriKind.RelativeOrAbsolute); 
      bitmapImage.EndInit(); 
      return bitmapImage; 
     }