Việc lắp ráp của tôi bao gồm một hình ảnh với tài nguyên BuildAction ==. Tôi muốn có được một BitmapImage từ tài nguyên nhúng này.Làm cách nào để có được BitmapImage từ Tài nguyên?
tôi có thể tải một BitmapImage từ tập tin như thế này:
var bitmap = new BitmapImage(new Uri(path));
Nhưng làm thế nào để tôi có thể tạo một Uri rằng sẽ đề cập đến một hình ảnh tài nguyên nhúng?
Khi tôi cố gắng và tạo ra một 'pack URI' (ví dụ pack://application:,,,/MyImage.png
hoặc pack://application:,,,/MyAssembly;component/MyImage.png
), một ngoại lệ được ném:
System.UriFormatException "không hợp lệ URI: Một cổng đã được dự kiến vì có một dấu hai chấm (':') hiện tại nhưng không thể phân tích cú pháp cổng. "
tôi thấy việc sửa chữa, đến UriFormatException trong này blog post
Tuy nhiên, với mà sửa chữa áp dụng, tôi vẫn nhận được ngoại lệ cố gắng để tải một BitmapImage từ một gói URI.
Khi sử dụng định dạng pack://application:,,,/Image.png
, tôi nhận được NullReferenceException và khi sử dụng định dạng pack://application:,,,/AssemblyName;component/Image.png
, tôi nhận được NotSupportedException "Tiền tố Uri không được nhận dạng".
Tóm tắt Vấn đề của tôi là tôi đã cố gắng sử dụng một 'gói URI' trong một quá trình trước khi bất kỳ kiểm soát WPF/cửa sổ/etc đã được khởi tạo, vì vậy chương trình 'gói' URI là chưa đăng ký (WPF khác yêu cầu 'công cụ' cũng không được thiết lập quá, bởi vì tự đăng ký gói chương trình không tự sửa chữa vấn đề). Giải pháp là chờ cho đến sau khi instantiating usercontrol WPF của tôi sử dụng các gói URI.
Cảm ơn bạn đã tóm tắt sự cố. Tôi có cùng một vấn đề và sẽ cố gắng giải quyết nó như bạn gợi ý. – Oskar
bản sao có thể có của [Đang tải bitmapImage trong mã] (http://stackoverflow.com/questions/801833/loading-bitmapimage-in-code) –