Gets the segments contained in the region for a particular row.
Supported in Silverlight, Windows Phone 7
Syntax
Visual Basic (Usage) | Copy Code |
---|
Dim instance As RasterImage
Dim row As Integer
Dim segmentsBuffer() As Integer
Dim segmentsBufferOffset As Integer
Dim value As Integer
value = instance.GetRegionClipSegments(row, segmentsBuffer, segmentsBufferOffset) |
Parameters
- 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.
Return Value
The number of segments from
row that are contained in the region.
Example
This example sets the value of pixels inside a region to half intensity.
Visual Basic | Copy Code |
---|
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# | Copy Code |
---|
public void GetRegionClipSegmentsExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "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();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
} |
SilverlightCSharp | Copy Code |
---|
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();
} |
SilverlightVB | Copy Code |
---|
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 |
Remarks
Requirements
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7
See Also