Displays an outline of the image region in the given
Graphics object.
Syntax
Parameters
- graphics
- Graphics object where the image is displayed and where the frame is to appear.
- xform
- RasterRegionXForm object that LEADTOOLS uses to translate between display coordinates
and image coordinates.
- frameIndex
- Zero-index of the frame to display. Possible values are from 0 to
MaxRegionFrameIndex. You can animate the region frame by cycling between these values.
Example
Visual Basic | Copy Code |
---|
Public Sub FrameRegionExample()
Dim f As FrameRegionForm = New FrameRegionForm()
f.ShowDialog()
End Sub
Private Class FrameRegionForm : Inherits Form
Private frameIndex As Integer
Private image As RasterImage
Private timer As System.Windows.Forms.Timer
Private fillRegion As Boolean
Public Sub New()
RasterCodecs.Startup()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"
image = codecs.Load(srcFileName)
Dim rc As Rectangle = New Rectangle(image.Width \ 3, image.Height \ 3, image.Width \ 3, image.Height \ 3)
Dim xform As RasterRegionXForm = New RasterRegionXForm()
xform.ViewPerspective = RasterViewPerspective.TopLeft
image.AddEllipseToRegion(xform, rc, RasterRegionCombineMode.Set)
frameIndex = 0
fillRegion = True
Text = "Double click to enable/disable filling the region"
timer = New System.Windows.Forms.Timer()
timer.Interval = 100
AddHandler timer.Tick, AddressOf timer_Tick
timer.Start()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
timer.Dispose()
image.Dispose()
RasterCodecs.Shutdown()
End If
MyBase.Dispose(disposing)
End Sub
Protected Overrides Sub OnDoubleClick(ByVal e As EventArgs)
fillRegion = Not fillRegion
Invalidate()
MyBase.OnDoubleClick(e)
End Sub
Private Function GetXForm(ByVal destRect As Rectangle) As RasterRegionXForm
Dim xform As RasterRegionXForm = New RasterRegionXForm()
xform.ViewPerspective = RasterViewPerspective.TopLeft
xform.XOffset = destRect.Left
xform.YOffset = destRect.Top
xform.XScalarDenominator = image.Width
xform.XScalarNumerator = destRect.Width
xform.YScalarDenominator = image.Height
xform.YScalarNumerator = destRect.Height
Return xform
End Function
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim destRect As Rectangle = RasterImage.CalculatePaintModeRectangle(image.ImageWidth, image.ImageHeight, ClientRectangle, RasterPaintSizeMode.Fit, RasterPaintAlignMode.Center, RasterPaintAlignMode.Center)
image.Paint(e.Graphics, Rectangle.Empty, Rectangle.Empty, destRect, e.ClipRectangle, RasterPaintProperties.Default)
If fillRegion Then
Dim xform As RasterRegionXForm = GetXForm(destRect)
image.FillRegion(e.Graphics, xform, New RasterColor(255, 0, 255))
End If
MyBase.OnPaint(e)
End Sub
Private Sub timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
Dim destRect As Rectangle = RasterImage.CalculatePaintModeRectangle(image.ImageWidth, image.ImageHeight, ClientRectangle, RasterPaintSizeMode.Fit, RasterPaintAlignMode.Center, RasterPaintAlignMode.Center)
Dim xform As RasterRegionXForm = GetXForm(destRect)
Dim g As Graphics = CreateGraphics()
Try
image.FrameRegion(g, xform, frameIndex)
Finally
CType(g, IDisposable).Dispose()
End Try
frameIndex += 1
If frameIndex > RasterImage.MaxRegionFrameIndex Then
frameIndex = 0
End If
End Sub
End Class |
C# | Copy Code |
---|
public void FrameRegionExample() { FrameRegionForm f = new FrameRegionForm(); f.ShowDialog(); } class FrameRegionForm : Form { int frameIndex; RasterImage image; System.Windows.Forms.Timer timer; bool fillRegion; public FrameRegionForm() { // Load the image RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; image = codecs.Load(srcFileName); // Add a region to the image Rectangle rc = new Rectangle(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3); RasterRegionXForm xform = new RasterRegionXForm(); xform.ViewPerspective = RasterViewPerspective.TopLeft; image.AddEllipseToRegion(xform, rc, RasterRegionCombineMode.Set); // initialize the frame index frameIndex = 0; fillRegion = true; Text = "Double click to enable/disable filling the region"; // Create the timer timer = new System.Windows.Forms.Timer(); timer.Interval = 100; timer.Tick += new EventHandler(timer_Tick); timer.Start(); } protected override void Dispose(bool disposing) { // Clean up if(disposing) { timer.Dispose(); image.Dispose(); RasterCodecs.Shutdown(); } base.Dispose(disposing); } protected override void OnDoubleClick(EventArgs e) { fillRegion = !fillRegion; Invalidate(); base.OnDoubleClick(e); } RasterRegionXForm GetXForm(Rectangle destRect) { // Calculate xform when the image is painted into 'destRect' RasterRegionXForm xform = new RasterRegionXForm(); xform.ViewPerspective = RasterViewPerspective.TopLeft; xform.XOffset = destRect.Left; xform.YOffset = destRect.Top; xform.XScalarDenominator = image.Width; xform.XScalarNumerator = destRect.Width; xform.YScalarDenominator = image.Height; xform.YScalarNumerator = destRect.Height; return xform; } protected override void OnPaint(PaintEventArgs e) { // Draw the image fit and center on this form Rectangle destRect = RasterImage.CalculatePaintModeRectangle( image.ImageWidth, image.ImageHeight, ClientRectangle, RasterPaintSizeMode.Fit, RasterPaintAlignMode.Center, RasterPaintAlignMode.Center); image.Paint(e.Graphics, Rectangle.Empty, Rectangle.Empty, destRect, e.ClipRectangle, RasterPaintProperties.Default); if(fillRegion) { RasterRegionXForm xform = GetXForm(destRect); image.FillRegion(e.Graphics, xform, new RasterColor(255, 0, 255)); } base.OnPaint(e); } void timer_Tick(object sender, EventArgs e) { // Frame the image region Rectangle destRect = RasterImage.CalculatePaintModeRectangle( image.ImageWidth, image.ImageHeight, ClientRectangle, RasterPaintSizeMode.Fit, RasterPaintAlignMode.Center, RasterPaintAlignMode.Center); RasterRegionXForm xform = GetXForm(destRect); using(Graphics g = CreateGraphics()) image.FrameRegion(g, xform, frameIndex); // advance to next frame frameIndex++; if(frameIndex > RasterImage.MaxRegionFrameIndex) frameIndex = 0; } } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also