Gets the segments contained in the region for a particular row.
public int GetRegionClipSegments(
int row,
int[] segmentsBuffer,
int segmentsBufferOffset
)
Public Function GetRegionClipSegments( _
ByVal row As Integer, _
ByVal segmentsBuffer() As Integer, _
ByVal segmentsBufferOffset As Integer _
) As Integer
- (NSUInteger)regionClipSegmentsForRow:(NSInteger)row
segmentsBuffer:(unsigned int *)buffer
public int getRegionClipSegments(
int row,
int[] segmentsBuffer,
int segmentsBufferOffset
)
public:
int GetRegionClipSegments(
int row,
array<int>^ segmentsBuffer,
int segmentsBufferOffset
)
row
The number of the row for which to get the segments. The first row is 0, and the last row is 1 less than the image height.
segmentsBuffer
Buffer to be updated with the segments from row contained in the region.
segmentsBufferOffset
Zero based index into segmentsBuffer.
The number of segments from row that are contained in the region.
To use this method, first call GetRegionBounds with the xform set to null, to get the image boundaries. The bounding rectangle will indicate which rows are contained in the region. Go through all the rows contained in the region to get the segments contained in the region.
The segments are returned as an array of pairs of horizontal offsets. The first point in the pair is the beginning of the segment (it is contained in the region). The last point in the pair is the end of the segment. To follow the Windows rules, the end of the segment is the first point NOT CONTAINED in the region.
In most regions, there will be one segment per row. However, some regions can have 0, 1, 2 or more segments.
For example, assume that for a particular row there are two segments. segmentsBuffer will be filled with 4 values. Let's call them x0, x1, x2, x3. In this case:
This example sets the value of pixels inside a region to half intensity.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;
using Leadtools.Drawing;
using Leadtools.Controls;
using LeadtoolsExamples.Common;
using Leadtools.Svg;
public void GetRegionClipSegmentsExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
string destFileName = Path.Combine(ImagesPath.Path, "Image1_GetRegionClipSegments.bmp");
// Load the image
RasterImage image = codecs.Load(srcFileName);
// Add a region to the image
LeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3);
image.AddEllipseToRegion(null, rc, RasterRegionCombineMode.Set);
// Set the pixels inside the region to black
// Get the maximum number of elements in a row,
// so we know how big the array of segments should be
int maxClipSegments = image.CalculateRegionMaximumClipSegments();
// Get the region bounds, so we know which is the first row
LeadRect rgnBounds = image.GetRegionBounds(null);
// Allocate an array large enough to store the maximum number of segments.
int[] segmentBuffer = new int[maxClipSegments];
// Loop through the region rows
for (int y = rgnBounds.Top; y < rgnBounds.Bottom; y++)
{
// Get the segments for the row
image.GetRegionClipSegments(y, segmentBuffer, 0);
// Do something with the pixels
for (int i = 0; i < maxClipSegments / 2; i++)
{
for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++)
{
RasterColor clr = image.GetPixelColor(y, j);
clr = new RasterColor(clr.R / 2, clr.G / 2, clr.B / 2);
image.SetPixelColor(y, j, clr);
}
}
}
// Save the image back to file
codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);
image.Dispose();
codecs.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Controls
Imports Leadtools.Dicom
Imports Leadtools.Drawing
Imports Leadtools.Svg
Public Sub GetRegionClipSegmentsExample()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_GetRegionClipSegments.bmp")
' Load the image
Dim image As RasterImage = codecs.Load(srcFileName)
' Add a region to the image
Dim rc As LeadRect = New LeadRect(image.Width \ 3, image.Height \ 3, image.Width \ 3, image.Height \ 3)
image.AddEllipseToRegion(Nothing, rc, RasterRegionCombineMode.Set)
' Set the pixels inside the region to black
' Get the maximum number of elements in a row,
' so we know how big the array of segments should be
Dim maxClipSegments As Integer = image.CalculateRegionMaximumClipSegments()
' Get the region bounds, so we know which is the first row
Dim rgnBounds As LeadRect = image.GetRegionBounds(Nothing)
' Allocate an array large enough to store the maximum number of segments.
Dim segmentBuffer As Integer() = New Integer(maxClipSegments - 1) {}
' Loop through the region rows
Dim y As Integer = rgnBounds.Top
Do While y < rgnBounds.Bottom
' Get the segments for the row
image.GetRegionClipSegments(y, segmentBuffer, 0)
' Do something with the pixels
Dim i As Integer = 0
Do While i < maxClipSegments / 2
Dim j As Integer = segmentBuffer(i)
Do While j < segmentBuffer(i + 1)
Dim clr As RasterColor = image.GetPixelColor(y, j)
clr = New RasterColor(clr.R \ 2, clr.G \ 2, clr.B \ 2)
image.SetPixelColor(y, j, clr)
j += 1
Loop
i += 1
Loop
y += 1
Loop
' Save the image back to file
codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24)
image.Dispose()
codecs.Dispose()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
c#[Silverlight C# Example]
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Dicom;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Examples;
using Leadtools.Windows.Media;
public void GetRegionClipSegmentsExample(RasterImage image, Stream destStream)
{
// Add a region to the image
LeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3);
image.AddRectangleToRegion(null, rc, RasterRegionCombineMode.Set);
// Set the pixels inside the region to black
// Get the maximum number of elements in a row,
// so we know how big the array of segments should be
int maxClipSegments = image.CalculateRegionMaximumClipSegments();
// Get the region bounds, so we know which is the first row
LeadRect rgnBounds = image.GetRegionBounds(null);
// Allocate an array large enough to store the maximum number of segments.
int[] segmentBuffer = new int[maxClipSegments];
// Loop through the region rows
for (int y = rgnBounds.Top; y < rgnBounds.Bottom; y++)
{
// Get the segments for the row
image.GetRegionClipSegments(y, segmentBuffer, 0);
// Do something with the pixels
for (int i = 0; i < maxClipSegments / 2; i++)
{
for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++)
{
RasterColor clr = image.GetPixelColor(y, j);
clr = new RasterColor(clr.R / 2, clr.G / 2, clr.B / 2);
image.SetPixelColor(y, j, clr);
}
}
}
// Save the image back to file
RasterCodecs codecs = new RasterCodecs();
codecs.Save(image, destStream, RasterImageFormat.Bmp, 0);
image.Dispose();
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Dicom
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Windows.Media
Public Sub GetRegionClipSegmentsExample(ByVal image As RasterImage, ByVal destStream As Stream)
' Add a region to the image
Dim rc As LeadRect = New LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3)
image.AddRectangleToRegion(Nothing, rc, RasterRegionCombineMode.Set)
' Set the pixels inside the region to black
' Get the maximum number of elements in a row,
' so we know how big the array of segments should be
Dim maxClipSegments As Integer = image.CalculateRegionMaximumClipSegments()
' Get the region bounds, so we know which is the first row
Dim rgnBounds As LeadRect = image.GetRegionBounds(Nothing)
' Allocate an array large enough to store the maximum number of segments.
Dim segmentBuffer As Integer() = New Integer(maxClipSegments - 1) {}
' Loop through the region rows
Dim y As Integer = rgnBounds.Top
Do While y < rgnBounds.Bottom
' Get the segments for the row
image.GetRegionClipSegments(y, segmentBuffer, 0)
' Do something with the pixels
Dim i As Integer = 0
Do While i < maxClipSegments / 2
Dim j As Integer = segmentBuffer(i)
Do While j < segmentBuffer(i + 1)
Dim clr As RasterColor = image.GetPixelColor(y, j)
clr = New RasterColor(clr.R / 2, clr.G / 2, clr.B / 2)
image.SetPixelColor(y, j, clr)
j += 1
Loop
i += 1
Loop
y += 1
Loop
' Save the image back to file
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.Save(image, destStream, RasterImageFormat.Bmp, 0)
image.Dispose()
End Sub
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