←选择平台

GetRegionClipSegments方法

总结
得到了段为一个特定的行包含在该地区。
语法
c#
VB
objective - c
c++
Java
公共intGetRegionClipSegments (int,int[]segmentsBuffer,intsegmentsBufferOffset)
公共函数GetRegionClipSegments (_按值传递作为整数,_按值传递segmentsBuffer()作为整数,_按值传递segmentsBufferOffset作为整数_)作为整数
——(了NSUInteger) regionClipSegmentsForRow:(NSInteger)segmentsBuffer:(无符号int*)缓冲区
公共intgetRegionClipSegments (int,int[]segmentsBuffer,intsegmentsBufferOffset)
公共:intGetRegionClipSegments (int,数组<int> ^segmentsBuffer,intsegmentsBufferOffset)

参数


的行数段。是0,第一行和最后一行1小于图像高度。

segmentsBuffer
缓冲区更新的部分包含在该地区。

segmentsBufferOffset
零基础索引segmentsBuffer

返回值

段的数量包含在该地区。

讲话

使用这种方法,第一个电话GetRegionBounds图形变换设置为,得到图像的边界。的边界矩形将指示行包含在该地区。经历的所有行中包含的区域中包含的部分地区。

双段作为一个数组返回的水平偏移量。第一点在两段的开始(它包含在该地区)。最后一点在这两段的结束。按照Windows规则,段的结束是第一点不包含在该地区。

在大多数地区,将会有一段行。然而,一些地区可以有0 1 2个或更多的部分。

例如,假设为一个特定的行有两个片段。segmentsBuffer将满4的值。让我们称之为x0, x1, x2, x3。在这种情况下:

  • 从0 x0 - 1部分是域外
  • 部分从x0 x1 - 1在该地区
  • 从x1, x2 - 1部分是域外
  • 部分从x2 x3 - 1在该地区
  • 部分从x3宽度- 1是该地区之外
例子

这个示例区域内像素的值设置为强度的一半。

c#
VB
使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ImageProcessing;使用Leadtools.ImageProcessing.Core;使用Leadtools.ImageProcessing.Color;使用Leadtools.Dicom;使用Leadtools.Drawing;使用Leadtools.Controls;使用Leadtools.Svg;公共无效GetRegionClipSegmentsExample (){RasterCodecs编解码器=RasterCodecs ();字符串srcFileName = Path.Combine (LEAD_VARS.ImagesDir,“Image1.cmp”);字符串destFileName = Path.Combine (LEAD_VARS.ImagesDir,“Image1_GetRegionClipSegments.bmp”);/ /加载图像RasterImage图像= codecs.Load (srcFileName);/ /添加一个地区的形象LeadRect rc =LeadRect(图片。宽度/ 3, image.Height / 3, image.Width / 3, image.Height / 3);image.AddEllipseToRegion (、rc RasterRegionCombineMode.Set);/ /设置区域内的像素为黑色/ /获得最大的连续的元素个数,/ /我们知道多大的数组片段intmaxClipSegments = image.CalculateRegionMaximumClipSegments ();/ /得到该地区范围,所以我们知道这是第一行LeadRect rgnBounds = image.GetRegionBounds ();/ /分配足够大的数组来存储段的最大数量。int[]segmentBuffer =int[maxClipSegments];/ /遍历行(inty = rgnBounds.Top;y < rgnBounds.Bottom;y + +){/ /得到连续的片段的形象。GetRegionClipSegments (y segmentBuffer 0);/ /做某事的像素(int我= 0;我< maxClipSegments / 2;我+ +){(intj = segmentBuffer[我];j < segmentBuffer (i + 1);j + +){RasterColor clr =形象。GetPixelColor (y, j);clr =RasterColor (clr。R / 2, clr。G / 2, clr。B / 2);的形象。集PixelColor(y, j, clr);}}}/ /保存图像文件编解码器。保存(图像、destFileName RasterImageFormat。Bmp、24);image.Dispose ();codecs.Dispose ();}静态LEAD_VARS{公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”;}
进口Leadtools进口Leadtools.Codecs进口Leadtools.ImageProcessing进口Leadtools.ImageProcessing.Core进口Leadtools.ImageProcessing.Color进口Leadtools.Controls进口Leadtools.Dicom进口Leadtools.Drawing进口Leadtools.Svg公共GetRegionClipSegmentsExample ()昏暗的编解码器作为RasterCodecs =RasterCodecs ()昏暗的srcFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Image1.cmp”)昏暗的destFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Image1_GetRegionClipSegments.bmp”)“加载图片昏暗的图像作为RasterImage = codecs.Load (srcFileName)“添加一个地区的形象昏暗的钢筋混凝土作为LeadRect =LeadRect(图片。宽度\ 3, image.Height \ 3, image.Width \ 3, image.Height \ 3)image.AddEllipseToRegion (没有什么、rc RasterRegionCombineMode。)黑色的设置区域内的像素连续的元素的最大数量,“我们知道数组段应该多大昏暗的maxClipSegments作为整数= image.CalculateRegionMaximumClipSegments ()的区域范围,所以我们知道这是第一行昏暗的rgnBounds作为LeadRect = image.GetRegionBounds (没有什么)“分配一个足够大的数组来存储段的最大数量。昏暗的segmentBuffer作为整数()=整数(maxClipSegments - 1) {}该地区的循环行昏暗的y作为整数= rgnBounds.Topy < rgnBounds.Bottom”段为行的形象。GetRegionClipSegments (y, segmentBuffer, 0)“做一些像素昏暗的作为整数= 0我< maxClipSegments / 2昏暗的j作为整数= segmentBuffer(我)j < segmentBuffer (i + 1)昏暗的clr作为RasterColor =形象。GetPixelColor (y, j)clr =RasterColor (clr。R \ 2, clr。G \ 2, clr。B \ 2)的形象。集PixelColor(y, j, clr)j + = 1循环我+ = 1循环y + = 1循环“保存图像文件编解码器。保存(图像、destFileName RasterImageFormat。Bmp, 24)image.Dispose ()codecs.Dispose ()结束公共NotInheritableLEAD_VARS公共常量ImagesDir作为字符串=“C: \ LEADTOOLS21 \ Resources \图片”结束
需求

目标平台

另请参阅

参考

RasterImage类

RasterImage成员

Leadtools组装
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。