• 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

Object Storage Arubacloud
0 głosów
417 wizyt
pytanie zadane 1 października 2016 w C# przez jankustosz1 Nałogowiec (35,880 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,300 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ź 206 wizyt
pytanie zadane 25 września 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)
0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 28 września 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)
0 głosów
1 odpowiedź 539 wizyt

92,555 zapytań

141,402 odpowiedzi

319,552 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...