- Start Visual Studio .NET.
- Open the project that you created in the tutorial, Using the Magnifying Glass.
- In the "Solution Explorer" window, right-click on the "References" folder, and select "Add Reference…" from the context menu. In the "Add Reference" dialog box, select the ".NET" tab and browse to Leadtools For .NET "<LEADTOOLS_INSTALLDIR>\Bin\DotNet\Win32 " folder and select the following DLLs:
- Leadtools.Drawing.dll
- Switch to Form1 code view (right-click Form1 in the solution explorer then select View Code ) and add the following lines at the beginning of the file (after the existing Imports / using statements):
-
[Visual Basic]
Imports System.Drawing.Drawing2D Imports Leadtools.Drawing
using System.Drawing.Drawing2D; using Leadtools.Drawing;
- Add the following code to derive your own class from RasterMagnifyGlass, and override OnPaintBorder, OnPaintCrosshair and OnPaintImage. For Visual Basic, put this code at the end of the file. For #, put this code just inside the namespace.
[Visual Basic]
' My own class, derived from Leadtools.WinForms.RasterMagnifyGlass Public Class MyMagGlass : Inherits RasterMagnifyGlass Protected Overrides Sub OnPaintBorder(ByVal g As Graphics, ByVal centerPoint As Point) g.DrawEllipse(Pens.Blue, centerPoint.X - (Size.Width / 2), centerPoint.Y - (Size.Height / 2), Size.Width - 1, Size.Height - 1) End Sub Protected Overrides Sub OnPaintCrosshair(ByVal g As Graphics, ByVal centerPoint As Point) g.DrawRectangle(Pens.Red, centerPoint.X - 10, centerPoint.Y - 10, 20, 20) End Sub Protected Overrides Sub OnPaintImage(ByVal g As Graphics, ByVal centerPoint As Point) Dim t As Transformer = New Transformer(Viewer.Transform) Dim rcDst As LeadRect = New LeadRect(centerPoint.X - (Size.Width / 2), centerPoint.Y - (Size.Height / 2), Size.Width - 1, Size.Height - 1) Dim rcTemp As Rectangle = New Rectangle(rcDst.Left, rcDst.Top, rcDst.Width, rcDst.Height) rcTemp = Rectangle.Round(rcTemp) Dim rcSrc As LeadRect = New LeadRect(rcTemp.Left, rcTemp.Top, rcTemp.Width, rcTemp.Height) Dim gstate As GraphicsState = g.Save()
Dim path As GraphicsPath = New GraphicsPath() path.AddEllipse(rcTemp) Dim rgn As Region = New Region(path) path.Dispose() Viewer.Image.DisableEvents() Dim contrast As Integer = Viewer.Image.PaintContrast Viewer.Image.PaintContrast = 1000 g.Clip = rgn RasterImagePainter.Paint(Viewer.Image, g, rcSrc, rcSrc, rcDst, rcDst, Viewer.PaintProperties) Viewer.Image.PaintContrast = contrast Viewer.Image.EnableEvents() g.Restore(gstate) rgn.Dispose() End Sub End Class -
[C#]
//My own class, derived from Leadtools.WinForms.RasterMagnifyGlass public class MyMagGlass : RasterMagnifyGlass { protected override void OnPaintBorder(Graphics g, Point centerPoint) { g.DrawEllipse(Pens.Blue, centerPoint.X - (Size.Width / 2), centerPoint.Y - (Size.Height / 2), Size.Width - 1, Size.Height - 1); } protected override void OnPaintCrosshair(Graphics g, Point centerPoint) { g.DrawRectangle(Pens.Red, centerPoint.X - 10, centerPoint.Y - 10, 20, 20); } protected override void OnPaintImage(Graphics g, Point centerPoint) { Transformer t = new Transformer(Viewer.Transform); LeadRect rcDst = new LeadRect(centerPoint.X - (Size.Width / 2), centerPoint.Y - (Size.Height / 2), Size.Width - 1, Size.Height - 1); Rectangle rcTemp = new Rectangle(rcDst.Left, rcDst.Top, rcDst.Width, rcDst.Height); rcTemp = Rectangle.Round(rcTemp); LeadRect rcSrc = new LeadRect(rcTemp.Left, rcTemp.Top, rcTemp.Width, rcTemp.Height); GraphicsState gstate = g.Save(); GraphicsPath path = new GraphicsPath(); path.AddEllipse(rcTemp); Region rgn = new Region(path); path.Dispose(); Viewer.Image.DisableEvents(); int contrast = Viewer.Image.PaintContrast; Viewer.Image.PaintContrast = 1000; g.Clip = rgn; RasterImagePainter.Paint(Viewer.Image, g, rcSrc, rcSrc, rcDst, rcDst, Viewer.PaintProperties); Viewer.Image.PaintContrast = contrast; Viewer.Image.EnableEvents(); g.Restore(gstate); rgn.Dispose(); } }
- In the code for the Load event for Form1, add the following line, just before the line that sets the InteractiveMode property:
[Visual Basic]
RasterImageViewer1.MagnifyGlass = New MyMagGlass 'set the MagGlass
[C#]rasterImageViewer1.MagnifyGlass = new MyMagGlass(); //set the MagGlass to my derived class
- Build, and Run the program to test it.