Gets or sets the rectangle that specifies the portion of the image to print.
public Rectangle ImageRectangle { get; set; }
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 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.
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.
using Leadtools.WinForms;
using Leadtools;
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:\LEADTOOLS22\Resources\Images";
}