void DrawCurrent(Graphics graphics)
 {
     graphics.Transform = gViewer.CurrentTransform();
     graphics.FillRectangle(new SolidBrush(Draw.MsaglColorToDrawingColor(gViewer.Graph.Attr.BackgroundColor)),
                            gViewer.SrcRect);
     graphics.Clip = new Region(gViewer.SrcRect);
     Draw.DrawPrecalculatedLayoutObject(graphics, gViewer.DGraph);
 }
        void DrawAll(int w, int h, Graphics graphics)
        {
            //fill the whole image
            graphics.FillRectangle(new SolidBrush(Draw.MsaglColorToDrawingColor(gViewer.Graph.Attr.BackgroundColor)),
                                   new RectangleF(0, 0, w, h));

            //calculate the transform
            double s = ImageScale;
            Graph  g = gViewer.Graph;
            double x = 0.5 * w - s * (g.Left + 0.5 * g.Width);
            double y = 0.5 * h + s * (g.Bottom + 0.5 * g.Height);

            graphics.Transform = new Matrix((float)s, 0, 0, (float)-s, (float)x, (float)y);
            Draw.DrawPrecalculatedLayoutObject(graphics, gViewer.DGraph);
        }
        private void DrawAll(int w, int h, System.Drawing.Graphics graphics)
        {
            using (SolidBrush solidBrush = new SolidBrush(Draw.MsaglColorToDrawingColor(gViewer.Graph.Attr.BackgroundColor))) {
                //fill the whole image
                graphics.FillRectangle(solidBrush, new RectangleF(0, 0, w, h));
            }

            //calculate the transform
            double s = ImageScale;

            Microsoft.Msagl.Drawing.Graph g = gViewer.Graph;
            double x = 0.5 * w - s * (g.Left + 0.5 * g.Width);
            double y = 0.5 * h + s * (g.Bottom + 0.5 * g.Height);

            using (graphics.Transform = new System.Drawing.Drawing2D.Matrix((float)s, 0, 0, (float)-s, (float)x, (float)y)) {
                Draw.DrawPrecalculatedLayoutObject(graphics, gViewer.DGraph);
            }
        }
        /// <summary>
        /// Renders the graph inside of the rectangle
        /// </summary>
        /// <param name="graphics"></param>
        /// <param name="rect"></param>
        public void Render(System.Drawing.Graphics graphics, System.Drawing.Rectangle rect)
        {
            if (graphics != null)
            {
                if (layedOutGraph == null)
                {
                    CalculateLayout();
                }

                double s       = Math.Min(rect.Width / graph.Width, rect.Height / graph.Height);
                double xoffset = rect.Left + 0.5 * rect.Width - s * (graph.Left + 0.5 * graph.Width);
                double yoffset = rect.Top + 0.5 * rect.Height + s * (graph.Bottom + 0.5 * graph.Height);
                using (SolidBrush sb = new SolidBrush(Draw.MsaglColorToDrawingColor(graph.Attr.BackgroundColor)))
                    graphics.FillRectangle(sb, rect);

                using (System.Drawing.Drawing2D.Matrix m = new System.Drawing.Drawing2D.Matrix((float)s, 0, 0, (float)-s, (float)xoffset, (float)yoffset))
                    graphics.Transform = m;

                Draw.DrawPrecalculatedLayoutObject(graphics, layedOutGraph);
            }
        }