public void Paint(DGraphics dg, Figure backgroundFigure, IList<Figure> figures) { // paint figures if (backgroundFigure != null) backgroundFigure.Paint(dg); foreach (Figure figure in figures) { figure.GlyphsVisible = false; figure.Paint(dg); } }
public void Paint(DGraphics dg, Figure backgroundFigure, IList<Figure> figures, Figure[] controlFigures) { // set antialias value dg.AntiAlias = AntiAlias; // draw backround and transform canvas accordind to the pagesize if (Preview) dg.Scale(Width / PageSize.X, Height / PageSize.Y); // scale to width & height as this is a preview viewer else { dg.FillRect(0, 0, Width, Height, DColor.LightGray, 1); // gray background DPoint offset = CanvasOffset(); dg.Translate(offset.X, offset.Y); // center drawing dg.Scale(scale, scale); // scale canvas dg.FillRect(SHADOW_OFFSET, SHADOW_OFFSET, PageSize.X, PageSize.Y, DColor.Black, 1); // draw black canvas shadow } // paint figures if (backgroundFigure != null) { backgroundFigure.Width = PageSize.X; backgroundFigure.Height = PageSize.Y; backgroundFigure.Paint(dg); } if (!Preview && Grid > 0) { for (int i = 1; i < (PageSize.X / Grid); i++) dg.DrawLine(new DPoint(i * grid, 0), new DPoint(i * grid, PageSize.Y), DColor.LightGray, 1, DStrokeStyle.Solid, 1, DStrokeCap.Butt); for (int i = 1; i < (PageSize.Y / Grid); i++) dg.DrawLine(new DPoint(0, i * grid), new DPoint(PageSize.X, i * grid), DColor.LightGray, 1, DStrokeStyle.Solid, 1, DStrokeCap.Butt); } double invScale = 1 / scale; foreach (Figure figure in figures) { figure._controlScale = invScale; figure.GlyphsVisible = editFigures; figure.Paint(dg); } if (editFigures) { foreach (Figure figure in figures) figure.PaintSelectionChrome(dg); if (controlFigures != null) foreach (Figure figure in controlFigures) { figure._controlScale = invScale; figure.Paint(dg); } } }