title: Save canvas to bitmap
body: <p>I want to save my canvas to bitmap. I found some examples in internet, but all of those saves only black image (with size of my canvas). 
  What can I do with this?</p>
  
  <p>Code:</p>
  
  <pre><code>    public static void SaveCanvasToFile(Canvas surface, string filename)
      {
          Size size = new Size(surface.Width, surface.Height);
  
          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(filename, FileMode.Create))
          {               
              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);
          }}
  </code></pre>