public Image Copy(ICanvas canvas, Area area) { Image img; Pixmap pm; global::Cairo.Context ctx; var w = canvas.Widget; NoWindowWidget widget = new NoWindowWidget { Width = area.Width, Height = area.Height }; canvas.SetWidget(widget); pm = new Pixmap(null, (int)area.Width, (int)area.Height, 24); ctx = Gdk.CairoHelper.Create(pm); using (CairoContext c = new CairoContext(ctx)) { ctx.Translate(-area.Start.X, -area.Start.Y); canvas.Draw(c, null); } img = new Image(Pixbuf.FromDrawable(pm, Colormap.System, 0, 0, 0, 0, (int)area.Width, (int)area.Height)); canvas.SetWidget(w); return(img); }
protected Image CreateInternalPreview(ICanvasView view, IViewModel vm, double width, double height) { NoWindowWidget widget = new NoWindowWidget(); view.SetWidget(widget); view.SetViewModel(vm); // set the widget sizes after the view model has been set widget.Width = width; widget.Height = height; return(App.Current.DrawingToolkit.Copy(view, new Area(new Point(0, 0), width, height))); }