WPF: Экспорт Canvas'a в BMP
От: czz  
Дата: 01.05.11 21:21
Оценка:
Здравствуйте!
Есть Canvas (WPF), заполняемый в процессе работы программы (в том числе изменяется и размер). Стоит задача экспортировать его в файл BMP/PNG.
Гугл помог найти несколько вариантов решения, но все они приводят к получению черного BMP файла или прозрачного PNG файла (замечу, что фон Canvas'a задан белым).

Например, код:

        public static void SaveCanvasToFile(Canvas surface, string filename)
        {
            // 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.Width, surface.Height);
            // Measure and arrange the surface
            // VERY IMPORTANT
            surface.Measure(size);
            surface.Arrange(new Rect(size));
            surface.UpdateLayout();
            // Create a render bitmap and push the surface to it
            RenderTargetBitmap renderBitmap =
              new RenderTargetBitmap(
                (int)size.Width,
                (int)size.Height,
                96d,
                96d,
                PixelFormats.Pbgra32);
            renderBitmap.Render(surface);

            // Create a file stream for saving image
            using (FileStream outStream = new FileStream(filename, FileMode.Create))
            {
                // Use png encoder for our data
                BmpBitmapEncoder encoder = new BmpBitmapEncoder();
                // push the rendered bitmap to it
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                // save the data to the stream
                encoder.Save(outStream);
            }
}


Что я делаю не так и что можно предпринять?
wpf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.