I have some method that converts System.Windows.Controls.Canvas Control to .png Image and save in a directory. I Call this functions for some List <Canvas> and I get all the images in some directory. It is working fine but some times this function generates some of the images blank randomly also again calling this function generates all images perfectly. what could be reason behind this malfunctioning? Below is the Function
public bool GenerateICards(Canvas surface)
{
bool retVal = false;
try
{
// 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));
// 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(SessionHelper.Path.PrintImage, FileMode.Create, FileAccess.Write, FileShare.None))
{
// 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;
// i++;
retVal = true;
}
//}
catch (Exception)
{
ErrorLbl = "Error occured while generating temporary images.";
}
return retVal;
}