LEADTOOLS Windows Forms (Leadtools.WinForms assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.30
ImageRectangle Property
See Also 
Leadtools.WinForms Namespace > RasterImagePrinter Class : ImageRectangle Property



Gets or sets the rectangle that specifies the portion of the image to print.

Syntax

Visual Basic (Declaration) 
Public Property ImageRectangle As Rectangle
Visual Basic (Usage)Copy Code
Dim instance As RasterImagePrinter
Dim value As Rectangle
 
instance.ImageRectangle = value
 
value = instance.ImageRectangle
C# 
public Rectangle ImageRectangle {get; set;}
C++/CLI 
public:
property Rectangle ImageRectangle {
   Rectangle get();
   void set (    Rectangle value);
}

Property Value

A System.Drawing.Rectangle that specifies the portion of the image to print.

Example

This example loads an image and then prints the top-left corner of the image to the bottom-right corner of the page. For an example on printing an image using default rectangles, refer to RasterImagePrinter.

Visual BasicCopy Code
' The image we are printing
   Private myRasterImage As RasterImage = Nothing
   Public Sub RasterImagePrinterExample2()
      ' Check if there are printers installed on this machine
      If (PrinterSettings.InstalledPrinters Is Nothing) OrElse (PrinterSettings.InstalledPrinters.Count < 1) Then
         MessageBox.Show("There are no printers installed on this machine")
         Return
      End If

      ' Load the image
      Using codecs As New RasterCodecs()
         Me.myRasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"))
      End Using

      ' Create the print document object
      Using document As New PrintDocument()
         ' We will use the default printer with default settings

         ' Add handlers for Begin/Print and End print events
         AddHandler document.BeginPrint, AddressOf printDocument_BeginPrint
         AddHandler document.PrintPage, AddressOf printDocument_PrintPage
         AddHandler document.EndPrint, AddressOf printDocument_EndPrint

         ' Use the .NET print preview dialog
         Using printPreviewDlg As New PrintPreviewDialog()
            printPreviewDlg.Document = document
            printPreviewDlg.WindowState = FormWindowState.Maximized
            printPreviewDlg.ShowDialog()
         End Using
      End Using

      ' Clean up
      Me.myRasterImage.Dispose()
   End Sub

   Private Sub printDocument_BeginPrint(ByVal sender As Object, ByVal e As PrintEventArgs)
      ' Reset the current page number
      ' Since we are using the print preview dialog, this event will be called twice (once
      ' to generate the print preview and once for actual printing). So, we must set this back
      ' to the first print page if we are going to print more than one page
   End Sub

   Private Sub printDocument_EndPrint(ByVal sender As Object, ByVal e As PrintEventArgs)
      ' Nothing to do here
   End Sub

   Private Sub printDocument_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
      ' Get the print document object
      Dim document As PrintDocument = DirectCast(sender, PrintDocument)

      ' Create an new LEADTOOLS image printer class
      Dim printer As New RasterImagePrinter()

      ' Set the document object so page calculations can be performed
      printer.PrintDocument = document

      ' We are going to stretch the top-left corner of the image into the bottom-right corner of
      ' the page (using the page margins)

      printer.SizeMode = RasterPaintSizeMode.Stretch

      ' Align mode will not have an effect if size mode is "Stretch"
      printer.HorizontalAlignMode = RasterPaintAlignMode.Near
      printer.VerticalAlignMode = RasterPaintAlignMode.Near

      ' Account for FAX images that may have different horizontal and vertical resolution
      printer.UseDpi = True

      ' Print the top-left corner of the image
      printer.ImageRectangle = New Rectangle( _
         0, _
         0, _
         Me.myRasterImage.ImageWidth \ 2, _
         Me.myRasterImage.ImageHeight \ 2)

      ' Use the margins
      printer.UseMargins = True

      ' Calculate the real margins
      Dim xMargin As Single = e.MarginBounds.X
      Dim yMargin As Single = e.MarginBounds.Y

      If Not (document.PrintController.IsPreview) Then
         ' Real printing (Not inside a .NET PrintPreview control), get the printer hard margins
         xMargin = xMargin - document.DefaultPageSettings.HardMarginX
         yMargin = yMargin - document.DefaultPageSettings.HardMarginY

         ' If you want to use the page bounds instead of the margins, use this to calculate it
         ' Dim pageBounds as RectangleF = e.PageBounds
         ' pageBounds.Width = pageBounds.Width - document.DefaultPageSettings.HardMarginX * 2
         ' pageBounds.Height = pageBounds.Height - document.DefaultPageSettings.HardMarginY * 2
      Else
         ' If you want to use the page bounds instead of the margins, use this to calculate it
         ' Dim pageBounds as RectangleF = e.PageBounds
      End If

      ' Print to the bottom right corner of the page including the margins
      Dim destWidth As Single = e.MarginBounds.Width \ 2
      Dim destHeight As Single = e.MarginBounds.Height \ 2
      Dim marginBounds As New RectangleF(xMargin + destWidth, yMargin + destHeight, destWidth, destHeight)

      printer.PageRectangle = marginBounds

      ' Print the first current page
      printer.Print(Me.myRasterImage, 1, e)

      ' No more pages to print
      e.HasMorePages = False

      ' De-couple our PrintDocument from the RasterImagePrinter
      printer.PrintDocument = Nothing
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
// The image we are printing
   private RasterImage myRasterImage = null;
   public void RasterImagePrinterExample2()
   {
      // Check if there are printers installed on this machine
      if(PrinterSettings.InstalledPrinters == null || PrinterSettings.InstalledPrinters.Count < 1)
      {
         MessageBox.Show("There are no printers installed on this machine");
         return;
      }

      // Load the image
      using(RasterCodecs codecs = new RasterCodecs())
      {
         this.myRasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"Ocr1.tif"));
      }

      // Create the print document object
      using(PrintDocument document = new PrintDocument())
      {
         // We will use the default printer with default settings

         // Add handlers for Begin/Print and End print events
         document.BeginPrint += new PrintEventHandler(printDocument_BeginPrint);
         document.PrintPage += new PrintPageEventHandler(printDocument_PrintPage);
         document.EndPrint += new PrintEventHandler(printDocument_EndPrint);

         // Use the .NET print preview dialog
         using(PrintPreviewDialog printPreviewDlg = new PrintPreviewDialog())
         {
            printPreviewDlg.Document = document;
            printPreviewDlg.WindowState = FormWindowState.Maximized;
            printPreviewDlg.ShowDialog();
         }
      }

      // Clean up
      this.myRasterImage.Dispose();
   }

   private void printDocument_BeginPrint(object sender, PrintEventArgs e)
   {
      // Reset the current page number
      // Since we are using the print preview dialog, this event will be called twice (once
      // to generate the print preview and once for actual printing). So, we must set this back
      // to the first print page if we are going to print more than one page
   }

   private void printDocument_EndPrint(object sender, PrintEventArgs e)
   {
      // Nothing to do here
   }

   private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
   {
      // Get the print document object
      PrintDocument document = sender as PrintDocument;

      // Create an new LEADTOOLS image printer class
      RasterImagePrinter printer = new RasterImagePrinter();

      // Set the document object so page calculations can be performed
      printer.PrintDocument = document;

      // We are going to stretch the top-left corner of the image into the bottom-right corner of
      // the page (using the page margins)

      printer.SizeMode = RasterPaintSizeMode.Stretch;

      // Align mode will not have an effect if size mode is "Stretch"
      printer.HorizontalAlignMode = RasterPaintAlignMode.Near;
      printer.VerticalAlignMode = RasterPaintAlignMode.Near;

      // Account for FAX images that may have different horizontal and vertical resolution
      printer.UseDpi = true;

      // Print the top-left corner of the image
      printer.ImageRectangle = new Rectangle(
         0,
         0,
         this.myRasterImage.ImageWidth / 2,
         this.myRasterImage.ImageHeight / 2);

      // Use the margins
      printer.UseMargins = true;

      // Calculate the real margins
      float xMargin = e.MarginBounds.X;
      float yMargin = e.MarginBounds.Y;

      if(!document.PrintController.IsPreview)
      {
         // Real printing (Not inside a .NET PrintPreview control), get the printer hard margins
         xMargin -= document.DefaultPageSettings.HardMarginX;
         yMargin -= document.DefaultPageSettings.HardMarginY;

         // If you want to use the page bounds instead of the margins, use this to calculate it
         // RectangleF pageBounds = e.PageBounds;
         // pageBounds.Width -= document.DefaultPageSettings.HardMarginX * 2;
         // pageBounds.Height -= document.DefaultPageSettings.HardMarginY * 2;
      }
      else
      {
         // If you want to use the page bounds instead of the margins, use this to calculate it
         // RectangleF pageBounds = e.PageBounds;
      }

      // Print to the bottom right corner of the page including the margins
      float destWidth = e.MarginBounds.Width / 2;
      float destHeight = e.MarginBounds.Height / 2;
      RectangleF marginBounds = new RectangleF(xMargin + destWidth, yMargin + destHeight, destWidth, destHeight);

      printer.PageRectangle = marginBounds;

      // Print the first current page
      printer.Print(this.myRasterImage, 1, e);

      // No more pages to print
      e.HasMorePages = false;

      // De-couple our PrintDocument from the RasterImagePrinter
      printer.PrintDocument = null;
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}

Remarks

This rectangle must be in image coordinates. To convert between image and device coordinates refer to Leadtools.RasterImage.RectangleFromImage(Leadtools.RasterViewPerspective,Leadtools.LeadRect) and Leadtools.RasterImage.RectangleToImage(Leadtools.RasterViewPerspective,Leadtools.LeadRect)

You can also pass Rectangle.Empty to use the whole image.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7

See Also