Example #1
0
        public static void Wszystkie(Widoki.widok_matryca W, Rysowanie rys, bool YN = false)
        {
            Canvas canvas = W.canvas;

            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName   = "matryca";               // Default file name
            dlg.DefaultExt = ".png";                  // Default file extension
            dlg.Filter     = "Plik png (.png)|*.png"; // Filter files by extension

            // Show save file dialog box
            if (YN == false)
            {
                Nullable <bool> result = dlg.ShowDialog();

                if (result == true)
                {
                    string filename = dlg.FileName;
                }
                for (int i = 0; i <= rys.liczba_matryc; i++)
                {
                    rys.Rysuj(i);

                    Char     delimiter  = '.';
                    String[] substrings = dlg.FileName.Split(delimiter);
                    String   nazwa      = substrings[0] + i + "." + substrings[1];

                    _stworz(canvas, nazwa);
                }
            }
            else
            {
                dlg.FileName = System.AppDomain.CurrentDomain.BaseDirectory + "tmp\\matryca";
                for (int i = 0; i <= rys.liczba_matryc; i++)
                {
                    rys.Rysuj(i);


                    String nazwa = dlg.FileName + i + ".png";

                    _stworz(canvas, nazwa, false);
                }
            }
        }
Example #2
0
        //miksowanko
        public void miksuj()
        {
            int  S                       = Convert.ToInt32(MW.textBox_Czas.Text);
            int  sekundCzas              = Math.Max(S, 10);
            bool zaleznosc_od_t          = true;
            ParameterizedThreadStart pts = new ParameterizedThreadStart(go);
            Thread thr                   = new Thread(pts);

            if (lista_obiektow.Count < 3)
            {
                zaleznosc_od_t = false;
            }

            int m_x = Matka.rozmiar_x;
            int m_y = Matka.rozmiar_y;

            Pasek = new Widoki.pasek(sekundCzas);
            Pasek.Show();
            Pasek.status.Value = 0;

            List <int> tab_arg = new List <int>();

            tab_arg.Add(m_x);
            tab_arg.Add(m_y);
            tab_arg.Add(odstep);
            thr.Start(tab_arg);

            var startTime = DateTime.UtcNow;

            do
            {
                UpdatePasek();
                Task.Delay(400);
            } while ((DateTime.UtcNow - startTime < TimeSpan.FromSeconds(sekundCzas) && zaleznosc_od_t) || NAJLEPSZE == null);

            status    = false; //tutaj kończymy działanie rozmieszczania i blokujemy możliwość dostępu do blokady
            startTime = DateTime.UtcNow;
            while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(2))
            {
            }
            ;                                                                //odczekujemy sekunde

            try
            {
                thr.Abort(); //kto nie zdążył się zakończyć jest niszczony - nie należy tak zabijać wątków, ale wydaje mi się, że
                //z punktu widzenia naszych obliczeń nie ma niebezpieczeństw (pracujemy na paru listach i tablicach), oprócz
                //blokady, w ramach której ustalamy najlepsze rozmieszczenie - tego wątku nie chciałbym ubić bo manipuluje zmienną
                //która zawiera wynik obliczeń. dlatego po upływie czasu ustalanie najlepszego rozmieszczenia jest blokowane
                //i odczekujemy sekunde, aż te wątki, które już czekają na porównanie swojego wyniku z aktualnym najlepszym
                //mogły się porównać. Potem następuje abort. - metoda trochę mało wyrafinowana (zdroworozsądkowa)
            }

            catch (ThreadAbortException e)
            {
            }
            finally
            {
            }

            R = new Rysowanie(wm);
            R.Rysuj(wm, NAJLEPSZE);

            Pasek.Close();
            InfoBox();

            try { wm.Show(); }
            catch { }
            prz = new Przeciaganie(NAJLEPSZE, wm, this);

            MW.button_rozmiesc_Copy.IsEnabled  = true;
            MW.button_rozmiesc_Copy1.IsEnabled = true;
        }