public class RasterPaintDibInfo
The user will typically allocate this class and return it from the RasterImagePaintCallbackFunction.GetDibInfoCallback callback.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Drawing;
public void RasterPaintPropertiesExample()
{
// Create the form
RasterPaintDibInfo_Example f = new RasterPaintDibInfo_Example();
f.ShowDialog();
}
public void AddCallBack()
{
// Load the image
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif");
image = codecs.Load(srcFileName);
// Whenever the Leadtools.RasterImage object needs to paint,
// it searches through the RasterPaintProperties.PaintCallbacks list until it finds
// a compatible RasterPaintCallbacks object. If the list is empty or there is no compatible
// RasterPaintCallbacks object, the default paint functions are used.
RasterPaintCallbacks cb = new RasterPaintCallbacks();
cb.SetCallback(RasterImagePaintCallbackFunction.GetDibInfoCallback, DibFunctionDelegate);
props = RasterPaintProperties.Default;
props.PaintDisplayMode = RasterPaintDisplayModeFlags.FastPaint;
props.PaintCallbacks.Add(cb);
props.PaintEngine = RasterPaintEngine.GdiPlus;
}
private object DibFunctionDelegate(RasterImage image, object[] args)
{
// Describe the image data expected by the custom paint callback:
// RasterImagePaintCallbackFunction.GetDibInfoCallback.
//
// Set and use as needed in application, in this case the values are taken from image.
// Then return the updated RasterPaintDibInfo
rasterPaintDibInfo.BitsPerPixel = image.BitsPerPixel;
rasterPaintDibInfo.BytesPerLine = Convert.ToUInt32(image.BytesPerLine);
rasterPaintDibInfo.Flags = RasterPaintDibInfoFlags.LowHighBitValid | RasterPaintDibInfoFlags.IgnoreLut;
rasterPaintDibInfo.Order = RasterByteOrder.Bgr;
rasterPaintDibInfo.ViewPerspective = RasterViewPerspective.RightTop;
return rasterPaintDibInfo;
}
public void RasterImagePainterPaint(PaintEventArgs e)
{
// Draw the image fit and center on this form
LeadRect destRect = LeadRect.FromLTRB(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Right, ClientRectangle.Bottom);
destRect = RasterImage.CalculatePaintModeRectangle(
image.ImageWidth,
image.ImageHeight,
destRect,
RasterPaintSizeMode.Fit,
RasterPaintAlignMode.Center,
RasterPaintAlignMode.Center);
RasterImagePainter.Paint(image, e.Graphics, LeadRect.Empty, destRect, props);
}
protected override void OnPaint(PaintEventArgs e)
{
RasterImagePainterPaint(e);
base.OnPaint(e);
}
protected override void OnDoubleClick(EventArgs e)
{
if ((props.PaintDisplayMode & RasterPaintDisplayModeFlags.ScaleToGray) == RasterPaintDisplayModeFlags.ScaleToGray)
{
Text = "Normal - doubleclick to change.";
props.PaintDisplayMode &= ~RasterPaintDisplayModeFlags.ScaleToGray;
}
else
{
Text = "ScaleToGray - doubleclick to change.";
props.PaintDisplayMode |= RasterPaintDisplayModeFlags.ScaleToGray;
}
Invalidate();
base.OnDoubleClick(e);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}