internal void DrawLayers(Graphics g, IEnumerable<LayerModel> renderLayers, IDataModel dataModel, Rect rect,
bool preview, bool updateAnimations)
{
var visual = new DrawingVisual();
using (var c = visual.RenderOpen())
{
// Setup the DrawingVisual's size
c.PushClip(new RectangleGeometry(rect));
c.DrawRectangle(new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)), null, rect);
// Draw the layers
foreach (var layerModel in renderLayers)
{
layerModel.Update(dataModel, preview, updateAnimations);
layerModel.Draw(dataModel, c, preview, updateAnimations);
}
// Remove the clip
c.Pop();
}
using (var bmp = ImageUtilities.DrawingVisualToBitmap(visual, rect))
{
g.DrawImage(bmp, new PointF(0, 0));
}
}