Leadtools.WinForms Namespace > RasterImagePrinter Class : ImageRectangle Property |
public Rectangle ImageRectangle {get; set;}
'Declaration Public Property ImageRectangle As Rectangle
'Usage Dim instance As RasterImagePrinter Dim value As Rectangle instance.ImageRectangle = value value = instance.ImageRectangle
public Rectangle ImageRectangle {get; set;}
get_ImageRectangle();
set_ImageRectangle(value);
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.
' 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
// 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"; }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2