Rectangle that specifies the portion of the image to print.
public Rectangle ImageRectangle { get; set; }
Public Property ImageRectangle() As System.Drawing.Rectangle
Get
Set
public:
property System::Drawing::Rectangle^ ImageRectangle
{
System::Drawing::Rectangle^ get()
void set(System::Drawing::Rectangle^ value)
}
A System.Drawing.Rectangle that specifies the portion of the image to print.
This rectangle must be in image coordinates. To convert between image and device coordinates refer to RectangleFromImage and RectangleToImage
You can also pass Rectangle.Empty to use the whole image.
using Leadtools;
using Leadtools.Controls;
using Leadtools.Codecs;
// 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:\LEADTOOLS21\Resources\Images";
}
Imports Leadtools
Imports Leadtools.Controls
Imports Leadtools.Codecs
Imports Leadtools.Drawing
' 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 RasterCodecs = New RasterCodecs()
Me.myRasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"))
End Using
' Create the print document object
Using document As PrintDocument = 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 PrintPreviewDialog = 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 = TryCast(sender, PrintDocument)
' Create an new LEADTOOLS image printer class
Dim printer As RasterImagePrinter = 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 -= 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;
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 RectangleF = 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:\LEADTOOLS21\Resources\Images"
End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document