Как сохранить элемент WPF как изображение разных размеров? - PullRequest
2 голосов
/ 10 февраля 2012

В моем приложении у меня есть диаграмма (WPF Toolkit) в нормальном разрешении / размере (например, 640x480). Я хочу экспортировать эту диаграмму в изображение с разными разрешениями (например, 800x600 или выше).

В настоящее время я использую следующие строки кодов:

var path = String.Format(@"C:\Temp\chart-{0}.bmp", DateTime.Now.Ticks);
var renderBitmap = new RenderTargetBitmap((int)xamChart.ActualWidth,
                                          (int)xamChart.ActualHeight,
                                          96d,
                                          96d,
                                          PixelFormats.Pbgra32);
renderBitmap.Render(xamChart);

// Create a file stream for saving image
using (var outStream = new FileStream(path, FileMode.Create))
{
   // Use png encoder for our data
   var encoder = new BmpBitmapEncoder();

   // push the rendered bitmap to it
   encoder.Frames.Add(BitmapFrame.Create(renderBitmap));

   // save the data to the stream
   encoder.Save(outStream);
}

Это работает очень хорошо, но если я хочу сохранить в большем разрешении, мне нужно изменить размер диаграммы. Эти изменения размеров видны на моей форме и не являются приемлемыми. Есть ли способ сохранить исходный размер элемента и сохранить его как изображение разных размеров?

PS. Я не хочу сохранять диаграмму в изображение в его исходном размере, а затем изменять размер изображения, потому что я теряю качество изображения.

PPS. Второе решение: может быть, кто-то знает, как экспортировать элемент WPF в векторную графику?

1 Ответ

1 голос
/ 10 февраля 2012

Я вообще не пробовал, но можно сделать то, что вы просите, увеличив DPI (четвертый и пятый аргумент до RenderTargetBitmap)

...