LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

GetRegionClipSegmentsメソッド








セグメントを取得する行の番号。最初の行は0です、そして、最後の行はimage高さより少ない1です。
からセグメントで更新されるバッファは、リージョンで格納しました。
ゼロは、segmentsBufferにインデックスの基礎を形成しました。
特定の行のためにリージョンで格納されるセグメントを取得します。
構文
public int GetRegionClipSegments( 
   int row,
   int[] segmentsBuffer,
   int segmentsBufferOffset
)
'Declaration
 
Public Function GetRegionClipSegments( _
   ByVal row As Integer, _
   ByVal segmentsBuffer() As Integer, _
   ByVal segmentsBufferOffset As Integer _
) As Integer
'Usage
 
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)
public int GetRegionClipSegments( 
   int row,
   int[] segmentsBuffer,
   int segmentsBufferOffset
)
- (NSUInteger)regionClipSegmentsForRow:(NSInteger)row 
                        segmentsBuffer:(unsigned int *)buffer
            
public int getRegionClipSegments(
  int row, 
  int[] segmentsBuffer, 
  int segmentsBufferOffset
)
            
 function Leadtools.RasterImage.GetRegionClipSegments( 
   row ,
   segmentsBuffer ,
   segmentsBufferOffset 
)
public:
int GetRegionClipSegments( 
   int row,
   array<int>^ segmentsBuffer,
   int segmentsBufferOffset
) 

パラメーター

セグメントを取得する行の番号。最初の行は0です、そして、最後の行はimage高さより少ない1です。
segmentsBuffer
からセグメントで更新されるバッファは、リージョンで格納しました。
segmentsBufferOffset
ゼロは、segmentsBufferにインデックスの基礎を形成しました。

戻り値

リージョンで格納されるからのセグメントの数。
解説

このメソッドを使うために、xformによる最初の呼び出しGetRegionBoundsは、image境界を取得するために、nullに設定しました。バウンディング四角形は、どの行がリージョンで格納されるかについて示します。リージョンで格納されるセグメントを取得するためにリージョンで格納されるすべての行を通り抜けます。

水平の組の配列がオフセットして、セグメントは返されます。一組の最初のポイントは、セグメント(それはリージョンで格納されます)の始まりです。一組の最後のポイントは、セグメントの終わりです。Windows規則に従うために、セグメントの終わりは、リージョンの最初のポイントNOT CONTAINEDです。

大部分のリージョンに、1つのセグメントが、行につきあります。しかし、若干のリージョンは、0、1つ、2つの以上セグメントを持っていることができます。

たとえば、特定の行のために、2つのセグメントがあると仮定します。segmentsBufferは、4つの値で塗りつぶされます。x0、x1、x2、x3と呼びましょう。この場合:

サンプル

このサンプルは、1/2の輝度にリージョンの中にピクセルの値を設定します。

Copy Code  
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
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 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();
}
RasterImageExamples.prototype.GetRegionClipSegmentsExample = function()
{
   Tools.SetLicense ( ) ;
   with ( Leadtools ) { 
      with ( Leadtools.Codecs ) {
         var codecs = new RasterCodecs();

         var srcFileName = "Assets\\Image1.cmp";
         var destFileName = "Image1_GetRegionClipSegments1.bmp";
         var image = null;

         // Load the image
         return Tools.AppInstallFolder().getFileAsync(srcFileName).then ( function ( loadFile ) {
            return codecs.loadAsync(LeadStreamFactory.create(loadFile));})
         .then ( function (img) {
            image = img;
            // Add a region to the image
            var rc = LeadRectHelper.create(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
            var maxClipSegments = image.calculateRegionMaximumClipSegments();

            // Get the region bounds, so we know which is the first row
            var rgnBounds = image.getRegionBounds(null);

            // Allocate an array large enough to store the maximum number of segments.
            var segmentBuffer = new Array(maxClipSegments);

            // Loop through the region rows
            for (var y = rgnBounds.y; y < rgnBounds.height + rgnBounds.y; y++)
            {
               // Get the segments for the row
               image.getRegionClipSegments(y, segmentBuffer, 0);

               // Do something with the pixels
               for (var i = 0; i < maxClipSegments / 2; i++)
               {
                  for (var j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++)
                  {
                     var clr = image.getPixelColor(y, j);
                     clr = RasterColorHelper.create(clr.r / 2, clr.g / 2, clr.b / 2);
                     image.setPixelColor(y, j, clr);
                  }
               }
            }

            // Save the image back to file
            return Tools.AppLocalFolder().createFileAsync(destFileName);})
         .then ( function ( saveFile)  {
            var saveStream = LeadStreamFactory.create(saveFile);
            return codecs.saveAsync(image, saveStream, RasterImageFormat.bmp, 24); })
         .then ( function ( ) {

            image.close();
            codecs.close();
         })
      }
   }
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;

      
public async Task GetRegionClipSegmentsExample()
{
   RasterCodecs codecs = new RasterCodecs();
   string srcFileName = @"Assets\Image1.cmp";
   string destFileName = @"Image1_GetRegionClipSegments.bmp";

   // Load the image
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));

   // Add a region to the image
   LeadRect rc = LeadRectHelper.Create(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.Y; y < rgnBounds.Height; 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 = RasterColorHelper.Create(clr.R / 2, clr.G / 2, clr.B / 2);
            image.SetPixelColor(y, j, clr);
         }
      }
   }

   // Save the image back to file
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   ILeadStream saveStream = LeadStreamFactory.Create(saveFile);
   await codecs.SaveAsync(image, saveStream, RasterImageFormat.Bmp, 24);

   image.Dispose();
   codecs.Dispose();
}
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();
}
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
必要条件

ターゲットプラットホーム

参照

参照

RasterImageクラス
RasterImageメンバ