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;} |
Return Value
A
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 Basic | Copy Code |
---|
Private myRasterImage As RasterImage = Nothing
Public Sub RasterImagePrinterExample2()
If (PrinterSettings.InstalledPrinters Is Nothing) OrElse (PrinterSettings.InstalledPrinters.Count < 1) Then
MessageBox.Show("There are no printers installed on this machine")
Return
End If
RasterCodecs.Startup()
Using codecs As New RasterCodecs()
Me.myRasterImage = codecs.Load("C:\Users\Public\Documents\LEADTOOLS Images\Ocr1.tif")
End Using
RasterCodecs.Shutdown()
Using document As New PrintDocument()
AddHandler document.BeginPrint, AddressOf printDocument_BeginPrint
AddHandler document.PrintPage, AddressOf printDocument_PrintPage
AddHandler document.EndPrint, AddressOf printDocument_EndPrint
Using printPreviewDlg As New PrintPreviewDialog()
printPreviewDlg.Document = document
printPreviewDlg.WindowState = FormWindowState.Maximized
printPreviewDlg.ShowDialog()
End Using
End Using
Me.myRasterImage.Dispose()
End Sub
Private Sub printDocument_BeginPrint(ByVal sender As Object, ByVal e As PrintEventArgs)
End Sub
Private Sub printDocument_EndPrint(ByVal sender As Object, ByVal e As PrintEventArgs)
End Sub
Private Sub printDocument_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim document As PrintDocument = DirectCast(sender, PrintDocument)
Dim printer As New RasterImagePrinter()
printer.PrintDocument = document
printer.SizeMode = RasterPaintSizeMode.Stretch
printer.HorizontalAlignMode = RasterPaintAlignMode.Near
printer.VerticalAlignMode = RasterPaintAlignMode.Near
printer.UseDpi = True
printer.ImageRectangle = New Rectangle( _
0, _
0, _
Me.myRasterImage.ImageWidth \ 2, _
Me.myRasterImage.ImageHeight \ 2)
printer.UseMargins = True
Dim xMargin As Single = e.MarginBounds.X
Dim yMargin As Single = e.MarginBounds.Y
If Not (document.PrintController.IsPreview) Then
xMargin = xMargin - document.DefaultPageSettings.HardMarginX
yMargin = yMargin - document.DefaultPageSettings.HardMarginY
Else
End If
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
printer.Print(Me.myRasterImage, 1, e)
e.HasMorePages = False
printer.PrintDocument = Nothing
End Sub
|
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 RasterCodecs.Startup(); using(RasterCodecs codecs = new RasterCodecs()) { this.myRasterImage = codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\Ocr1.tif"); } RasterCodecs.Shutdown(); // 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; } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
See Also