Źródło IMG w WPF

0

Siemka w jaki sposób dodać źródło obrazka w aplikacji?

zdjecie.Source = "img/1.jpg";

daje mi błąd
Error 1 Cannot implicitly convert type 'string' to 'System.Windows.Media.ImageSource'
Natomiast gdy daje w xaml Source = "img/1.jpg" to jest ok
Z góry dzięki pozdrawiam

0

Niestety, to tak nie działa. Być może XAML jakoś sam sobie to konwertuje, nie wiem, ale w kodzie musisz ręcznie stworzyć obiekt obrazka, na przykład w ten sposób:

image.Source = new BitmapImage(new Uri(@"sciezka/do/twojego/obrazka.png"));

0

Dostaje teraz taki błąd

 
An exception of type 'System.UriFormatException' occurred in System.dll but was not handled in user code

Additional information: Nieprawidłowy identyfikator URI: nie można określić formatu identyfikatora URI.

If there is a handler for this exception, the program may be safely continued.

Zrobiłem sobie

            try
            {
                zdjecie.Source = new BitmapImage(new Uri(@"img/1.png"));
            }
            catch (UriFormatException)
            {
                MessageBox.Show("nie dziala");
            }
 

i niestety wyskakuje błąd probowałem z /img/1.png z formatem jpg i niestety cały czas to samo co moze byc nie tak?

0

No to spróbuj może tak:

try
{
zdjecie.Source = new BitmapImage(new Uri(@"img/1.png", UriKind.RelativeOrAbsolute));
}
catch (UriFormatException)
{
MessageBox.Show("nie dziala");
}


Rozumiem że obrazek ten nie jest związany z samym programem, tj. nie jest w zasobach? Jeżeli jest, to zamiast tej ścieżki, trzeba dać "pack://application:,,,/NAZWA_APLIKACJI;component/obrazek.png".
0

A nie da się w jakiś bardziej ludzki sposób dodać kilku zdjęć to tablicy żeby się po nich poruszać?

1
SieUczeSie napisał(a):

Natomiast gdy daje w xaml Source = "img/1.jpg" to jest ok

parser XAML posiada mnóstwo konwerterów. Tak naprawdę kod XAML jest zamieniany na zwykły kod C# i parser tworzy instancje obiektów. Dlatego string img/1.jpg jest zamieniany na URI ( "img/1.jpg", UriKind.Relative ).

Sam aktualnie pobieram wiedzę z książki Jarosława Ciska, nie wiem czy mogę podać tytuł na forum i nie łamać reguł.

0
SieUczeSie napisał(a):

A nie da się w jakiś bardziej ludzki sposób dodać kilku zdjęć to tablicy żeby się po nich poruszać?

Poprzez Binding do kolekcji a najlepiej ObservableCollection. Trzeba tylko pamiętać aby zdefiniować Template aby kontrolka widziała jak wyświetlać dane. Nie powiem ci jak bo sam jestem przed tym rozdziałem w książce :)

0

Można też tak:

zdjecie.Source = new ImageSourceConverter().ConvertFromString(@"../../Images/ikona.ico") as ImageSource;

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