예제 #1
0
        private void Do_Enumeration(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.FolderBrowserDialog FBD = new System.Windows.Forms.FolderBrowserDialog();
            if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Component.IModel  current_model = model;
                Segments_iterator SI            = new Segments_iterator(model);

                int nom_file = 0;

                double     splitterAccuracy  = double.Parse(textBox_Splitter_Accuracy.Text, CultureInfo.InvariantCulture);
                double     detalizerAccuracy = double.Parse(textBox_Detalizer_Accuracy.Text, CultureInfo.InvariantCulture);
                IAlgorithm alg = new Algorithm(splitterAccuracy, detalizerAccuracy);

                Html view = new Html(filename);

                RenderTargetBitmap rtb = new RenderTargetBitmap((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight, 96d, 96d, PixelFormats.Pbgra32);
                PngBitmapEncoder   BufferSave;

                while (!SI.IsOver)
                {
                    model = current_model;
                    RedrawModel();
                    mid_surface_model = alg.Run(new SolverData(model));
                    RedrawMidSurface();

                    model = SI.Next;
                    RedrawModel(Brushes.Purple);

                    //построение текущей поверхности

                    mid_surface_model = alg.Run(new SolverData(model));
                    RedrawMidSurface(Brushes.Blue);

                    // сохранение картинки

                    mainCanvas.UpdateLayout();
                    //mainCanvas.Measure(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight));
                    //mainCanvas.Arrange(new Rect(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight)));
                    rtb.Render(mainCanvas);
                    BufferSave = new PngBitmapEncoder();
                    BufferSave.Frames.Add((BitmapFrame.Create(rtb)));
                    using (var fs = File.OpenWrite(FBD.SelectedPath + "\\image" + nom_file + ".png"))
                    {
                        BufferSave.Save(fs);
                        fs.Close();
                    }
                    view.Add(FBD.SelectedPath + "\\image" + nom_file + ".png");
                    nom_file++;
                }
                System.IO.File.WriteAllText(FBD.SelectedPath + "\\show.html", view.Save());
            }
        }