配列クラス (DEDGE_T 構造体)
Namespace: FVILAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
[SerializableAttribute] public class DEDGE_T_ARRAY : CFviObject, ICloneable, ISerializable, IXmlSerializable, IEnumerable<DEDGE_T>, IFviCopyable, [T:FVIL.IFviPtrIndexer<fvalgcli::DEDGE_T>] |
Visual Basic |
---|
<SerializableAttribute> Public Class DEDGE_T_ARRAY Inherits CFviObject Implements ICloneable, ISerializable, IXmlSerializable, IEnumerable(Of DEDGE_T), IFviCopyable, [T:FVIL.IFviPtrIndexer<fvalgcli::DEDGE_T>] |
Remarks
アンマネージ環境のヒープに DEDGE_T 構造体の配列を確保するクラスです。
確保した領域のアドレスは、Address に保管され、
Clear()()()() が呼ばれた時や
このインスタンスが解放される時に自動的に解放されます。
このクラスは、.NET 環境とネイティブ環境の間で大量の画像処理データの受け渡しを行うことを目的としています。
通常、.NET 環境の固定長配列をネイティブ環境に受け渡す場合は マーシャリングが必要になり、
データのコピーが少なくとも1回は発生します。
ネイティブ環境の処理結果を .NET 環境に反映する場合(In,Out 属性の引数の場合)は、計2回発生します。
このクラスを使用するとマーシャリングの必要が無い為、データコピーのコスト削減が行えます。
領域の確保と解放について:
領域の確保と解放は FVCL を介して FIE ライブラリを使用しています。 外部で確保した領域を設定することもできますが、 アロケータを一致させる必要がありますのでご注意ください。(下表参照) 自動的に解放したくない場合は、 IsAttach を true に設定することで回避できます。
その他の操作:
操作 | メソッド | 概要 |
---|---|---|
領域設定 | SetBuffer(DEDGE_T_PTR, Int32, Boolean) | 外部で確保した領域を設定する場合に使用します。 |
アタッチ | Attach(Object) | 同一型のインスタンスが保有する領域にアタッチします。 |
移動 | MoveFrom(Object) | 同一型のインスタンスが保有する領域をこのインスタンスに移動します。 |
複製 | CopyFrom(Object) | 同一型のインスタンスの内容を複製します。 |
初期値と範囲:
プロパティ | 初期値 | 範囲 | 説明 |
---|---|---|---|
Item[([( Int32])]) | (なし) | DEDGE_T | 配列の要素の取得または設定を行います。 |
Address | IntPtr.Zero | IntPtr.Zero または 有効なアドレス | 配列の先頭アドレスの取得を行います。 |
Count | 0 | 0,1~ | 配列の要素数の取得を行います。 |
IsAttach | false | false/true | アタッチ状態の取得または設定を行います。 |
SizeOfItem | sizeof(DEDGE_T) | sizeof(DEDGE_T) | 配列要素1つ分のサイズ(byte)を取得します。 |
Size | 0 | SizeOfItem × Count | 配列全体のサイズ(byte)を取得します。 |
データ変換 (1):
エッジ点群(または点群)を保有する他の機能からデータ変換するには、 CopyFrom(Object) メソッドを使用してください。 対応しているクラスは以下の通りです。
項目 | 説明 |
---|---|
DEDGE_T の IEnumerable |
全ての要素をそのまま複製します。 |
F_DEDGE の IEnumerable |
エッジ点座標(x,y)、角度(q)をそのまま複製します。 |
F_EDGE の IEnumerable |
エッジ点座標(x,y)はそのまま複製します。 角度(q)は Degree から Radian に変換します。 |
DPNT_T の IEnumerable |
点座標(x,y)はそのまま複製します。 角度(q)は 0 初期化します。 |
PNT_T の IEnumerable |
点座標(x,y)はそのまま複製します。 角度(q)は 0 初期化します。 |
CFviEdgeData の IEnumerable |
エッジ点座標(x,y)は Position からそのまま複製します。 角度(q)は Angle から Radian に変換します。 |
CFviPoint の IEnumerable |
点座標(x,y)は X,Y をそのまま複製します。 角度(q)は 0 初期化します。 |
Point の IEnumerable |
点座標(x,y)は X,Y をそのまま複製します。 角度(q)は 0 初期化します。 |
PointF の IEnumerable |
点座標(x,y)は X,Y をそのまま複製します。 角度(q)は 0 初期化します。 |
データ変換 (2): 他の機能へのデータ変換
本クラスから他の機能へデータ変換するには、下記のメソッドを使用してください。
項目 | メソッド | 説明 |
---|---|---|
DEDGE_T コレクション | ToList()()()() | 全要素を DEDGE_T 構造体のコレクションに格納して返します。 |
DEDGE_T 配列 | ToArray()()()() | 全要素を DEDGE_T 構造体の固定長配列に格納して返します。 |