Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение схемы графа в формат PNG (JPG) 
:(
    Опции темы
Karta
Дата 3.4.2014, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 4.6.2009

Репутация: нет
Всего: 0



Добрый день, у меня такая проблема.
У меня есть программа, которая рисует граф из 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;
        }
    }


Далее прописываю в представлении обработчик кнопки:
Код

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


Помогите довести до ума работу, я уже второй день мучаюсь..

Спасибо
PM MAIL   Вверх
jonie
Дата 4.4.2014, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

Но что то неправильно, выдает ошибку в строке
а какую ошибку мы сейчас все дружно будем угадыаать?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1008 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.