Image - jak podać relatywną ścieżkę

0

Mam coś takiego i mi nie działa mimo że jest identycznie jak w msdn http://msdn.microsoft.com/pl-pl/library/system.windows.media.imaging.bitmapimage(v=vs.110).aspx

Zakomentowana linijka działa ale koniecznie muszę podać scieżkę relatywną

public MainWindow()
        {
            InitializeComponent();
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.UriSource = new Uri(@"/dir/image.jpg", UriKind.RelativeOrAbsolute);
            //bi.UriSource = new Uri(@"C:\Users\Damian\Documents\Visual Studio 2013\Projects\ImageTest\ImageTest\bin\Debug\dir\image.jpg");
            bi.EndInit();
            image.Source = bi;
            label.Content = image.Source.ToString();
        }

W razie czego załączam cały projekt

2

Dlaczego tak:

            bi.UriSource = new Uri(@"/dir/image.jpg", UriKind.RelativeOrAbsolute);

a nie tak:

            bi.UriSource = new Uri(@"/dir/image.jpg", UriKind.Relative);

?

Edit: Źle napisałem, miałem zapytać, czemu nie tak:

 bi.UriSource = new Uri("dir/image.jpg", UriKind.Relative);

Może troszkę błądzę ;-) ale chodzi mi generalnie o to, że chcesz się odwołać do pliku na dysku, a nie zdalnej ścieżki.

0

Bo tak jest w msdn, z resztą to też nie działa.

1
bi.UriSource = new Uri(Environment.CurrentDirectory + @"\dir\image.jpg", UriKind.RelativeOrAbsolute);

@dam1an jeśli chcesz żeby zadziała sposób podany przez @fourfour dodaj katalog do projektu.

0

Właśnie tak to przed chwilą zrobiłem ale to wciąż nie rozwiązuje mojego problemu. Kontrolka Image później jest zamieniana na xaml, wysyłana na inny komputer i wczytywana. Dlatego zależy mi żeby podać relatywną ścieżkę.

1

Masz tak to powinno wyglądać.

0

Też nie, we właściwej aplikacji użytkownik otwiera (nie pamiętam jak to się nazywa, takie okno do wyboru plików) i wybiera obrazek. Więc nie mogę go wcześniej dołączyć do projektu.

1

Noto jak wybiera to masz całą ścieżkę. Wiec gdzie Ty masz niby problem.

0

Ten plik który wybrał jest kopiowany do folderu z aplikacją. I stamtąd chcę go wczytać. Bo tak jak mówiłem pełna ścieżka z jednego komputera niekoniecznie zadziała na innym.

1

No ale wiesz gdzie go kopiujesz wciąż masz ścieżkę do tego miejsca jeśli jest to zawsze katalog dir w tym samym katalogu co aplikacja to "Environment.CurrentDirectory" zawsze zwróci poprawną ścieżkę. Jeśli użytkownik wybiera inną ścieżkę to wciąż jest znana.

0

No będę musiał w aplikacji wczytującej na drugim komputerze modyfikować ścieżkę. A tego chciałem uniknąć bo myślałem że podając relatywną będzie szybciej.

1
dam1an napisał(a):

Ten plik który wybrał jest kopiowany do folderu z aplikacją. I stamtąd chcę go wczytać. Bo tak jak mówiłem pełna ścieżka z jednego komputera niekoniecznie zadziała na innym.

Czyli folder z aplikacją jest zasobem sieciowym? Może w takim razie używaj tej ścieżki do zasobu \jakiskomp\jakiszasob ?

0

Nie nie jest, w każdym razie już sobie poradziłem. Musiałem modyfikować regexem przysłany plik xaml na drugim kompie.
W każdym razie dzięki za chęci.

1
dam1an napisał(a):

Też nie, we właściwej aplikacji użytkownik otwiera (nie pamiętam jak to się nazywa, takie okno do wyboru plików) i wybiera obrazek. Więc nie mogę go wcześniej dołączyć do projektu.

Chodzi Ci o skladnik OpenFileDialog;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1