internal static void DrawGrid(Graphics graphics, Rectangle viewableRectangle) { AmbientTheme ambientTheme = WorkflowTheme.CurrentTheme.AmbientTheme; if (ambientTheme.GridStyle == DashStyle.Dot) { Point empty = Point.Empty; empty.X = viewableRectangle.X - (viewableRectangle.X % ambientTheme.GridSize.Width); empty.Y = viewableRectangle.Y - (viewableRectangle.Y % ambientTheme.GridSize.Height); for (int i = empty.X; i <= viewableRectangle.Right; i += Math.Max(ambientTheme.GridSize.Width, 1)) { for (int j = empty.Y; j <= viewableRectangle.Bottom; j += Math.Max(ambientTheme.GridSize.Height, 1)) { graphics.FillRectangle(ambientTheme.MajorGridBrush, new Rectangle(new Point(i, j), new Size(1, 1))); if ((((i + (ambientTheme.GridSize.Width / 2)) >= viewableRectangle.Left) && ((i + (ambientTheme.GridSize.Width / 2)) <= viewableRectangle.Right)) && (((j + (ambientTheme.GridSize.Height / 2)) >= viewableRectangle.Top) && ((j + (ambientTheme.GridSize.Height / 2)) <= viewableRectangle.Bottom))) { graphics.FillRectangle(ambientTheme.MinorGridBrush, new Rectangle(new Point(i + (ambientTheme.GridSize.Width / 2), j + (ambientTheme.GridSize.Height / 2)), new Size(1, 1))); } } } } else { using (Hdc hdc = new Hdc(graphics)) { using (HPen pen = new HPen(ambientTheme.MajorGridPen)) { using (HPen pen2 = new HPen(ambientTheme.MinorGridPen)) { hdc.DrawGrid(pen, pen2, viewableRectangle, ambientTheme.GridSize, true); } } } } }
internal static void DrawGrid(Graphics graphics, Rectangle viewableRectangle) { AmbientTheme ambientTheme = WorkflowTheme.CurrentTheme.AmbientTheme; if (ambientTheme.GridStyle == DashStyle.Dot) { Point gridStart = Point.Empty; gridStart.X = viewableRectangle.X - (viewableRectangle.X % ambientTheme.GridSize.Width); gridStart.Y = viewableRectangle.Y - (viewableRectangle.Y % ambientTheme.GridSize.Height); for (int gridCoOrdX = gridStart.X; gridCoOrdX <= viewableRectangle.Right; gridCoOrdX += Math.Max(ambientTheme.GridSize.Width, 1)) { for (int gridCoOrdY = gridStart.Y; gridCoOrdY <= viewableRectangle.Bottom; gridCoOrdY += Math.Max(ambientTheme.GridSize.Height, 1)) { graphics.FillRectangle(ambientTheme.MajorGridBrush, new Rectangle(new Point(gridCoOrdX, gridCoOrdY), new Size(1, 1))); if (((gridCoOrdX + ambientTheme.GridSize.Width / 2) >= viewableRectangle.Left && (gridCoOrdX + ambientTheme.GridSize.Width / 2) <= viewableRectangle.Right) && ((gridCoOrdY + ambientTheme.GridSize.Height / 2) >= viewableRectangle.Top && (gridCoOrdY + ambientTheme.GridSize.Height / 2) <= viewableRectangle.Bottom)) graphics.FillRectangle(ambientTheme.MinorGridBrush, new Rectangle(new Point(gridCoOrdX + ambientTheme.GridSize.Width / 2, gridCoOrdY + ambientTheme.GridSize.Height / 2), new Size(1, 1))); } } } else { //We use native pens to draw the grid for efficiency reason using (Hdc hdc = new Hdc(graphics)) using (HPen majorGridPen = new HPen(ambientTheme.MajorGridPen)) using (HPen minorGridPen = new HPen(ambientTheme.MinorGridPen)) { hdc.DrawGrid(majorGridPen, minorGridPen, viewableRectangle, ambientTheme.GridSize, true); } } }