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()); } }