protected override void OnGdiPaintFrame(GdiPaintContext ctx) { using (Graphics graphics = Graphics.FromHdc(ctx.Hdc)) { using (PaintEventArgs args = new PaintEventArgs(graphics, ctx.UpdateRect.ToGdipRectangle())) { this.OnGdipPaint(args); } } }
public void EhView_PreviewPanelPaint(System.Drawing.Graphics g) { g.PageUnit = System.Drawing.GraphicsUnit.Point; g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; g.FillRectangle(Brushes.Transparent, g.VisibleClipBounds); g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; var paintContext = new GdiPaintContext(); // set position and rotation to zero // m_TextObject.Position=new PointF(0,0); // m_TextObject.Rotation = 0; _doc.Paint(g, paintContext, true); // restore the original position and rotation values // m_TextObject.Position = new PointF(m_PositionX,m_PositionY); // m_TextObject.Rotation = _rotation; }
/// <summary> /// Infrastructure. Don't use in your own projects. Will be called by PrintDocument during the printing process. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void EhPrintPage(object sender, PrintPageEventArgs e) { Graphics g = e.Graphics; var savedGraphics = g.Save(); float hx = e.PageSettings.HardMarginX; // in hundreths of inch float hy = e.PageSettings.HardMarginY; // in hundreths of inch //g.TranslateTransform(-hx,-hy); float zoom; PointF startLocationOnPage; SizeF graphSize = (SizeF)_layers.Size; _printOptions.GetZoomAndStartLocation(e.PageBounds, e.MarginBounds, graphSize, out zoom, out startLocationOnPage, true); graphSize = graphSize.Scale(zoom); PointF startLocationInGraph = new PointF(0, 0); if (_printOptions.TilePages) { startLocationOnPage = e.MarginBounds.Location; // when tiling pages start always from margin bounds int columns = (int)Math.Ceiling(graphSize.Width / e.MarginBounds.Width); int rows = (int)Math.Ceiling(graphSize.Height / e.MarginBounds.Height); int col = _page % columns; int row = _page / columns; //startLocationInGraph = new PointF(col * e.MarginBounds.Width / zoom, row * e.MarginBounds.Height / zoom); startLocationOnPage.X -= col * e.MarginBounds.Width; startLocationOnPage.Y -= row * e.MarginBounds.Height; _page++; e.HasMorePages = _page < rows * columns; } if (_printOptions.PrintCropMarks) { float armLength = Math.Min(e.MarginBounds.Width, e.MarginBounds.Height) / 20.0f; DrawCross(g, new PointF(e.MarginBounds.Left, e.MarginBounds.Top), armLength); DrawCross(g, new PointF(e.MarginBounds.Right, e.MarginBounds.Top), armLength); DrawCross(g, new PointF(e.MarginBounds.Left, e.MarginBounds.Bottom), armLength); DrawCross(g, new PointF(e.MarginBounds.Right, e.MarginBounds.Bottom), armLength); } // DrawCrossedRectangle(g, e.MarginBounds); // from here on we have units of Points g.PageUnit = GraphicsUnit.Point; if (!IsPrintPreview) g.TranslateTransform(-hx * 72 / 100.0f, -hy * 72 / 100.0f); g.TranslateTransform(startLocationOnPage.X * 72 / 100.0f, startLocationOnPage.Y * 72 / 100.0f); g.ScaleTransform(zoom, zoom); var paintContext = new GdiPaintContext(); _layers.PaintPreprocessing(paintContext); _layers.Paint(g, paintContext); _layers.PaintPostprocessing(); g.Restore(savedGraphics); }
void IGdiPaintHost.OnGdiPaint(GdiPaintContext ctx) { this.OnGdiPaint(ctx); }
protected virtual void OnGdiPaint(GdiPaintContext ctx) { }