public void RenderBitmaps() { var visual = new DrawingVisual(); using (var c = visual.RenderOpen()) { c.PushClip(new RectangleGeometry(_rect)); c.DrawRectangle(new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)), null, _rect); if (MouseModel != null) { MouseModel.CloseDrawingContext(); c.DrawRectangle(new VisualBrush(MouseModel), new Pen(), MouseModel.RelativeRect); } if (HeadsetModel != null) { HeadsetModel.CloseDrawingContext(); c.DrawRectangle(new VisualBrush(HeadsetModel), new Pen(), HeadsetModel.RelativeRect); } if (GenericModel != null) { GenericModel.CloseDrawingContext(); c.DrawRectangle(new VisualBrush(GenericModel), new Pen(), GenericModel.RelativeRect); } if (MousematModel != null) { MousematModel.CloseDrawingContext(); c.DrawRectangle(new VisualBrush(MousematModel), new Pen(), MousematModel.RelativeRect); } KeyboardModel.CloseDrawingContext(); c.DrawRectangle(new VisualBrush(KeyboardModel), new Pen(), KeyboardModel.RelativeRect); c.Pop(); } var frameBitmap = ImageUtilities.DrawingVisualToBitmap(visual, _rect); if (MouseModel != null) { MouseBitmap = MouseModel.GetBitmapFromFrame(frameBitmap); } if (HeadsetModel != null) { HeadsetBitmap = HeadsetModel.GetBitmapFromFrame(frameBitmap); } if (GenericModel != null) { GenericBitmap = GenericModel.GetBitmapFromFrame(frameBitmap); } if (MousematModel != null) { MousematBitmap = MousematModel.GetBitmapFromFrame(frameBitmap); } KeyboardBitmap = KeyboardModel.GetBitmapFromFrame(frameBitmap); }