/// <summary> /// Combines two drawing objects into single canvas object. /// If both drawing objects are canvas, first canvas will get all second canvas drawing objects and second canvas will be cleared. /// If only one of the objects is canvas, second object will be added to the canvas. /// If none of the objects is canvas, new canvas will be created with both drawings. /// </summary> /// <param name="graphics"><see cref="IGraphics"/> object.</param> /// <param name="drawing1">First drawing object.</param> /// <param name="drawing2">Second drawing object.</param> /// <returns>Canvas object containing both drawing objects.</returns> public static ICanvas Combine(this IGraphics graphics, IDrawing drawing1, IDrawing drawing2) { ICanvas canvas1 = drawing1 as ICanvas; ICanvas canvas2 = drawing2 as ICanvas; if (canvas1 != null && canvas2 != null) { IDrawing[] drawings = canvas2.Drawings.ToArray(); canvas2.Clear(); foreach (IDrawing drawing in drawings) { canvas1.AddDrawing(drawing); } return(canvas1); } else if (canvas1 != null) { canvas1.AddDrawing(drawing2); return(canvas1); } else if (canvas2 != null) { canvas2.AddDrawing(drawing1); return(canvas2); } else { return(graphics.CreateCanvas(drawing1, drawing2)); } }
/// <summary> /// Creates canvas object that contains the specified list of drawings. /// </summary> /// <param name="graphics"><see cref="IGraphics"/> object.</param> /// <param name="drawingObjects">Drawing visualizer objects.</param> /// <returns>Canvas object.</returns> public static ICanvas CreateCanvas(this IGraphics graphics, params IDrawingVisualizerObject[] drawingObjects) { IDrawing[] drawings = drawingObjects.Where(d => d.CanVisualize()).Select(d => d.CreateDrawing(graphics)).ToArray(); return(graphics.CreateCanvas(drawings)); }
/// <summary> /// Creates canvas object that contains the specified list of drawings. /// </summary> /// <param name="graphics"><see cref="IGraphics"/> object.</param> /// <param name="drawings">Drawing objects.</param> /// <returns>Canvas object.</returns> public static ICanvas CreateCanvas(this IGraphics graphics, params IDrawing[] drawings) { return(graphics.CreateCanvas(drawings)); }