• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# problem ze zmianą image source wpf

0 głosów
145 wizyt
pytanie zadane 1 października 2016 w C# i .NET przez jankustosz1 Pasjonat (18,630 p.)
Thread watekObrazowania = new Thread(
                delegate ()
                {
                    while (true)
                    {
// operacje w skutek których tworzony jest obraz nie będę to ich pisał bo namieszają w każdym razie to działa
                        string sciezkaZapisz = "sciezka do tego obrazu";

                        BitmapImage tmp = new BitmapImage();
                        tmp.BeginInit();
                        tmp.CacheOption = BitmapCacheOption.OnLoad;
                        tmp.UriSource = new Uri(sciezkaZapisz, UriKind.RelativeOrAbsolute);
                        tmp.EndInit();
                        tmp.Freeze();

                        if (!imageObraz.Dispatcher.CheckAccess())
                        {
                            this.imageObraz.Dispatcher.Invoke(new DelegatBitmapImage(delegate (BitmapImage bi) 
                            {
                                imageObraz.Source = bi;
                            }), tmp);
                        }
                        else
                        {
                            imageObraz.Source = tmp;
                        }

                    }
                }
           );
            watekObrazowania.Start();

Mam mniej więcej taki kod myślę że po nazwach domyślicie się co jest czym. Za każdym obiegiem pętli pobierany jest obraz a potem powinien być pokazany w imageObraz. Problem jest taki że jak raz ustawi do imageObraz jakiś obraz to z następnym obiegiem pętli już się on nie zmieni nie wiem czemu.

1 odpowiedź

+1 głos
odpowiedź 1 października 2016 przez PiotrBajer Mądrala (5,280 p.)
wybrane 2 października 2016 przez jankustosz1
 
Najlepsza

Cześć, sprawdziłem Twój skrypt i u mnie działa, lekko zmodyfikowałem kod, ponieważ nie wiem co robi "DelegatBitmapImage", a druga sprawa to nieskończona pętla "while(true)", która podmienia obrazki w nieskończoność blokując główny wątek metodą Invoke. Zobacz na mój kod, który działa:

Thread watekObrazowania = new Thread(
                delegate()
                {
                    List<string> sciezki = new List<string>() {"1.JPG", "2.JPG", "3.JPG", "4.JPG" };
                    for(int i = 0; i < sciezki.Count; i++)
                    {
                        // operacje w skutek których tworzony jest obraz nie będę to ich pisał bo namieszają w każdym razie to działa
                        string sciezkaZapisz = sciezki[i];

                        BitmapImage tmp = new BitmapImage();
                        tmp.BeginInit();
                        tmp.CacheOption = BitmapCacheOption.OnLoad;
                        tmp.UriSource = new Uri(sciezkaZapisz, UriKind.RelativeOrAbsolute);
                        tmp.EndInit();
                        tmp.Freeze();

                        if (!imageObraz.Dispatcher.CheckAccess())
                        {
                            /*this.imageObraz.Dispatcher.Invoke(new Action(() => {
                                imageObraz.Source = tmp;
                            }));*/

                            this.imageObraz.Dispatcher.Invoke(new Action<BitmapImage>(delegate(BitmapImage bi)
                            {
                                imageObraz.Source = bi;
                            }), tmp);
                        }
                        else
                        {
                            imageObraz.Source = tmp;
                        }

                        //Thread.Sleep(2 * 1000);

                    }
                }
           );
watekObrazowania.Start();

 

Podobne pytania

+1 głos
1 odpowiedź 82 wizyt
pytanie zadane 25 września 2016 w C# i .NET przez jankustosz1 Pasjonat (18,630 p.)
0 głosów
1 odpowiedź 76 wizyt
pytanie zadane 28 września 2016 w C# i .NET przez jankustosz1 Pasjonat (18,630 p.)
0 głosów
1 odpowiedź 102 wizyt
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

63,168 zapytań

109,404 odpowiedzi

228,554 komentarzy

42,695 pasjonatów

Przeglądających: 62
Pasjonatów: 4 Gości: 58

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...