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);
         }
     }
 }
Example #2
0
        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;
        }
Example #3
0
		/// <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);
		}
Example #4
0
 void IGdiPaintHost.OnGdiPaint(GdiPaintContext ctx)
 {
     this.OnGdiPaint(ctx);
 }
Example #5
0
 protected virtual void OnGdiPaint(GdiPaintContext ctx)
 {
 }