示例#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);
                }
            }
        }
示例#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;
        }
示例#3
0
        public static void PDF(Jądro J, Widoki.widok_matryca W, Rysowanie rys, List <string> listawybranychinformacji)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "PDF file (*.pdf)|*.pdf";
            //  try
            // {
            if (saveFileDialog.ShowDialog() == true)
            {
                string        path = System.AppDomain.CurrentDomain.BaseDirectory + "tmp";
                DirectoryInfo di   = Directory.CreateDirectory(path);

                iTextSharp.text.Document      doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4);
                iTextSharp.text.pdf.PdfWriter wri = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new FileStream(saveFileDialog.FileName, FileMode.Create));
                doc.Open();



                if (listawybranychinformacji[0] == "Cztery na stronę")
                {
                    iTextSharp.text.pdf.PdfPTable table     = new iTextSharp.text.pdf.PdfPTable(2);
                    iTextSharp.text.pdf.PdfPTable tableInfo = new iTextSharp.text.pdf.PdfPTable(1);
                    if (listawybranychinformacji.Count > 1)
                    {
                        tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                    }


                    float[] widths = new float[] { iTextSharp.text.PageSize.A4.Width - doc.LeftMargin, iTextSharp.text.PageSize.A4.Width - doc.RightMargin };

                    table.SetWidths(widths);
                    table.DefaultCell.FixedHeight         = (iTextSharp.text.PageSize.A4.Height - (2 * doc.BottomMargin)) / 2;
                    table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                    table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;

                    Wszystkie(W, rys, true);

                    for (int i = 0; i <= rys.liczba_matryc; i++)
                    {
                        iTextSharp.text.Image PNG = iTextSharp.text.Image.GetInstance(System.AppDomain.CurrentDomain.BaseDirectory + "tmp\\matryca" + i + ".png");
                        RotationPNG(PNG);
                        table.AddCell(PNG);
                        if (rys.liczba_matryc + 1 % 2 != 0 && i + 1 > rys.liczba_matryc)
                        {
                            table.AddCell(new iTextSharp.text.pdf.PdfPCell(new iTextSharp.text.Phrase("")));
                        }

                        if (listawybranychinformacji.Count > 1 && i % 4 == 0)
                        {
                            for (int k = i; k <= i + 3; k++)
                            {
                                GetInfoPDF(J, k, tableInfo, listawybranychinformacji);
                            }
                            doc.Add(tableInfo);
                            doc.NewPage();
                            tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                        }
                        if ((i % 4 == 3 && i != 0) || i + 1 > rys.liczba_matryc)
                        {
                            doc.Add(table);
                            doc.NewPage();
                            table = new iTextSharp.text.pdf.PdfPTable(2);

                            table.SetWidths(widths);
                            table.DefaultCell.FixedHeight         = (iTextSharp.text.PageSize.A4.Height - (2 * doc.BottomMargin)) / 2;
                            table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                            table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
                        }
                    }
                }
                else if (listawybranychinformacji[0] == "Dwie na stronę")
                {
                    iTextSharp.text.pdf.PdfPTable tableInfo = new iTextSharp.text.pdf.PdfPTable(1);
                    iTextSharp.text.pdf.PdfPTable table     = new iTextSharp.text.pdf.PdfPTable(1);
                    if (listawybranychinformacji.Count > 1)
                    {
                        tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                    }

                    float[] widths = new float[] { iTextSharp.text.PageSize.A4.Width - doc.LeftMargin };

                    table.SetWidths(widths);
                    table.DefaultCell.FixedHeight         = (iTextSharp.text.PageSize.A4.Height - (2 * doc.BottomMargin)) / 2;
                    table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                    table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;

                    Wszystkie(W, rys, true);

                    for (int i = 0; i <= rys.liczba_matryc; i++)
                    {
                        iTextSharp.text.Image PNG = iTextSharp.text.Image.GetInstance(System.AppDomain.CurrentDomain.BaseDirectory + "tmp\\matryca" + i + ".png");
                        RotationPNG(PNG);
                        table.AddCell(PNG);
                        if (listawybranychinformacji.Count > 1 && i % 2 == 0)
                        {
                            for (int k = i; k <= i + 1; k++)
                            {
                                GetInfoPDF(J, k, tableInfo, listawybranychinformacji);
                            }
                            doc.Add(tableInfo);
                            doc.NewPage();
                            tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                        }
                        if (i % 2 != 0 && i != 0 || i + 1 > rys.liczba_matryc)
                        {
                            doc.Add(table);
                            doc.NewPage();
                            table = new iTextSharp.text.pdf.PdfPTable(1);
                            table.SetWidths(widths);
                            table.DefaultCell.FixedHeight         = (iTextSharp.text.PageSize.A4.Height - (2 * doc.BottomMargin)) / 2;
                            table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                            table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
                        }
                    }
                }
                else if (listawybranychinformacji[0] == "Jedna na stronę")
                {
                    iTextSharp.text.pdf.PdfPTable tableInfo = new iTextSharp.text.pdf.PdfPTable(1);
                    iTextSharp.text.pdf.PdfPTable table     = new iTextSharp.text.pdf.PdfPTable(1);
                    table.DefaultCell.FixedHeight         = (iTextSharp.text.PageSize.A4.Height - (2 * doc.BottomMargin));
                    table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                    table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
                    Wszystkie(W, rys, true);

                    if (listawybranychinformacji.Count > 1)
                    {
                        tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                    }


                    for (int i = 0; i <= rys.liczba_matryc; i++)
                    {
                        iTextSharp.text.Image PNG = iTextSharp.text.Image.GetInstance(System.AppDomain.CurrentDomain.BaseDirectory + "tmp\\matryca" + i + ".png");
                        RotationPNG(PNG);



                        table.AddCell(PNG);
                        if (listawybranychinformacji.Count > 1)
                        {
                            GetInfoPDF(J, i, tableInfo, listawybranychinformacji);
                            doc.Add(tableInfo);
                            doc.NewPage();
                            tableInfo = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                        }
                        doc.Add(table);
                        doc.NewPage();
                        table = new iTextSharp.text.pdf.PdfPTable(1);
                        table.DefaultCell.VerticalAlignment   = iTextSharp.text.Element.ALIGN_MIDDLE;
                        table.DefaultCell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
                    }
                }
                else if (listawybranychinformacji[0] == "Brak")
                {
                    if (listawybranychinformacji.Count > 1)
                    {
                        iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);


                        for (int i = 0; i <= rys.liczba_matryc; i++)
                        {
                            GetInfoPDF(J, i, table, listawybranychinformacji);

                            doc.Add(table);
                            table = new iTextSharp.text.pdf.PdfPTable(listawybranychinformacji.Count - 1);
                        }
                    }
                }


                doc.Close();
                foreach (FileInfo file in di.GetFiles())
                {
                    file.Delete();
                }
                di.Delete();
            }
            //   }
            //   catch {
            //     MessageBox.Show("Coś poszło nie tak!","Błąd!", MessageBoxButton.OK,MessageBoxImage.Warning);
            //  }
        }