Jak utworzyć identyfikator URI opakowania dla obrazu znajdującego się w pliku zasobów?Identyfikator URI opakowania dla obrazu osadzonego w pliku resx
mam zespół o nazwie MyAssembly.Resources.dll
, ma folder o nazwie Obrazy, to tam jest plik zasobu nazywany Assets.resx. Ten plik zasobów zawiera mój obraz (o nazwie MyImage.png). Linia kodu mam to:
uri = new Uri("pack://application:,,,/MyAssembly.Resources,Culture=neutral,PublicKeyToken=null;component/Images/Assets/MyImage.png");
Jednak gdy próbuję dostarczyć ten URI do konstruktora nowego BitmapImage dostaję IOException z komunikatem
nie może zlokalizować zasobów „images/aktywa /myimage.png ".
Zauważ, że mam inne luźne obrazy w tym samym zespole, który można pobrać w porządku za pomocą pakietu URI, te obrazy mają ich działanie kompilacji ustawiony Zasób ale nie są one osadzone w pliku RESX. Czy powinienem dołączyć nazwę pliku resx do ścieżki?
(Szukam osadzenia obrazów w plikach resx, dzięki czemu mogę wykorzystać ustawienia kultury interfejsu użytkownika w celu pobrania odpowiedniego obrazu (obraz zawiera tekst)).
Co sprawia, że myślisz, że to możliwe przy użyciu 'pakiet:' schemat? Jest to związane ze znormalizowanymi specyfikacjami Open Packaging Conventions. Tak więc uri wskazuje zasoby pakietu aplikacji, a nie zasoby osadzone .NET. Możliwe, że jest to możliwe z innym schematem/protokołem (możesz przekierować ten niestandardowy protokół do osadzonych zasobów, coś w rodzaju 'new Uri (" resx: // blabla ")'). –
@SimonMourier Myślałem, że musi istnieć sposób, aby to zrobić, ponieważ możesz łączyć łańcuchy znaków w plikach resx z XAML, więc byłoby mało prawdopodobne, że nie byłoby sposobu na dotarcie do innych typów zasobów osadzonych w tym samym pliku, oraz URI jest sposobem opisywania ścieżki do zasobu. Jeśli masz sugestię dotyczącą używania niestandardowego protokołu, chętnie go wysłucham. Luźne (nietekstowe) obrazy są przywoływane przy użyciu identyfikatora URI opakowania, więc chciałem zachować spójność, jeśli to w ogóle możliwe. – slugster