Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 22:13   #1
LENA_M
Пользователь
 
Регистрация: 24.04.2009
Сообщений: 98
По умолчанию Сохранение схемы графа в формат PNG (JPG) А здесь смотрели?

Добрый день, у меня такая проблема.
У меня есть программа, которая рисует граф из xml документа. Для рисования я использую GraphSharp.
И мне нужно добавить кнопку на главное окно MainWindow, которая будет сохранять эту схему(которая получилась в результате)в один из форматов JPG/PNG.
Нашла простой примервот
решила воспользоваться... Но, что то видимо не правильно пишу в представлении. Создаю клас, как описанно в примере:
Код:
class Model
    {
        //Set resolution of image.
        const double dpi = 96d;
        //Set pixelformat of image.
        PixelFormat pixelFormat = PixelFormats.Pbgra32;
        /// <summary>
        /// Method exports the graphlayout to an png image.
        /// </summary>
        /// <param name="path">destination of image</param>
        /// <param name="surface">graphlayout you want to print</param>
        public void ExportToPng(GraphSharp.Controls.GraphLayout surface, Uri path)
        {
            //Save current canvas transform
            Transform transform = surface.LayoutTransform;
            //Reset current transform (in case it is scaled or rotated)
            surface.LayoutTransform = null;
            //Get the size of canvas
            Size size = new Size(surface.ActualWidth, surface.ActualHeight);
            
            //Measure and arrange the surface
            //VERY IMPORTANT
            surface.Measure(size);
            surface.Arrange(new Rect(size));
            //Create a render bitmap and push the surface to it
            RenderTargetBitmap renderBitmap =
              new RenderTargetBitmap(
                (int)size.Width,
                (int)size.Height,
                dpi,
                dpi,
                pixelFormat);
            //Render the graphlayout onto the bitmap.
            renderBitmap.Render(surface);
            //Create a file stream for saving image
            using (FileStream outStream = new FileStream(path.LocalPath, FileMode.Create))
            {
                //Use png encoder for our data
                PngBitmapEncoder encoder = new PngBitmapEncoder();
                //Push the rendered bitmap to it
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                
                //Save the data to the stream
                encoder.Save(outStream);
            }
            //Restore previously saved layout
            surface.LayoutTransform = transform;
        }
    }
Далее прописываю в представлении обработчик кнопки:
Код:
private void Export_Click_1(object sender, RoutedEventArgs e)
       {
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
           dlg.Title = "Export";
           dlg.DefaultExt = ".png"; 
           dlg.Filter = "Image (.png)|*.png"; 

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

         Model graphToImage = new Model();
         graphToImage.ExportToPng(surface, new Uri(((SaveFileDialog)sender).FileName));


       }
выдает ошибку в строке
Код:
graphToImage.ExportToPng(surface, new Uri(((SaveFileDialog)sender).FileName));
Помогите, как правильно написать...
Спасибо
LENA_M вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается конвертировать jpg в png Русик123 Общие вопросы Delphi 4 18.03.2012 11:02
Вопрос по использованию регулярных выражений А здесь смотрели? alexplato Общие вопросы .NET 2 14.12.2010 20:33
XmlDocument с proxy, cookie и user agent А здесь смотрели? alexplato Общие вопросы .NET 1 25.11.2010 16:48
Чтение файла в массив и построение графика TChart, floating point overflow А здесь смотрели? vitalyisaev2 C++ Builder 1 09.11.2010 21:36