FIE 画像オブジェクトへのアタッチ

Namespace: FVIL.Data
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public virtual void AttachFIE(
	FHANDLE hImage,
	int channel,
	Rectangle region
)
Visual Basic
Public Overridable Sub AttachFIE ( 
	hImage As FHANDLE,
	channel As Integer,
	region As Rectangle
)

Parameters

hImage
Type: fvalgcli..::..FHANDLE
FIE ハンドル (画像オブジェクト)
channel
Type: System..::..Int32
チャネル指標 [-1:全て, 0~:単一チャネル]
region
Type: System.Drawing..::..Rectangle
範囲 (始点・幅・高さが 0 の Rectangle を指定すると全面を参照します。)

Remarks

指定された FIE 画像オブジェクトの指定範囲を参照するチャイルド画像を生成します。

channel に -1 が指定された時は全てのチャネルを参照します。 0 以上の値が指定された場合は単一のチャネルを参照します。
全面を参照する場合は、Rectangle の初期値(始点・幅・高さが全て 0)を region に指定してください。

ここで作成したチャイルド画像は、このクラスの Dispose メソッドで解放されます。 チャイルド画像を使用する間、参照先の FIE 画像オブジェクトを解放しないでください。

FIE ハンドルとは FIE ライブラリで使用されるデータ構造のことです。 FIE ハンドルはいくつかの種類がありますが、ここでは F_OBJID_IMG_ROOT または F_OBJID_IMG_CHILD のことを意味します。 詳しくは FIE ライブラリ説明書をご参照ください。

処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。


エラーコード:
ErrorCode メンバ内容
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリの確保に失敗しました。

Examples

ソースコード:
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;    // FvPluginXXXX attribute requires fvalgcli

namespace User.SampleCode.Data
{
    public partial class Image
    {
        [FvPluginExecute]
        public void AttachFIE()
        {
            int status = 0;
            fvalgcli.FHANDLE hImage = IntPtr.Zero;

            try
            {
                // 1) FIE 画像オブジェクトの生成.
                status = fvalgcli.api.fnFIE_load_img_file(Defs.TestImageDir + "/floppy_RGB.jpg",
                    ref hImage, fvalgcli.f_color_img_type.F_COLOR_IMG_TYPE_UC8);
                if (status != 0)
                    throw new fvalgcli.FvException(status);

                using (var src = new FVIL.Data.CFviImage())
                {
                    int channels = fvalgcli.api.fnFIE_img_get_channels(hImage);
                    for (int ch = 0; ch < channels; ch++)
                    {
                        var window = new System.Drawing.Rectangle(20, 30, 200, 120);

                        // 2) FIE 画像オブジェクトへのアタッチ.
                        src.AttachFIE(hImage, ch, window);

                        // -) 確認用.
                        src.Save(Defs.ResultDir + string.Format("/Image.AttachFIE-{0}.png", ch));
                    }
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                // E) 手動で解放する必要があります.
                hImage.Dispose();
            }
        }
    }
}

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also