FIE ハンドルの設定
Namespace: FVIL.DataAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual void SetFIE( FHANDLE hImage, bool is_attach ) |
Visual Basic |
---|
Public Overridable Sub SetFIE ( hImage As FHANDLE, is_attach As Boolean ) |
Parameters
- hImage
- Type: fvalgcli..::..FHANDLE
FIE ハンドル (画像オブジェクト)
- is_attach
- Type: System..::..Boolean
アタッチの指示。
true : アタッチします。設定されたハンドルは、このクラスでは解放されません。ユーザー側で管理してください。
false : アタッチしません。設定されたハンドルは、このクラスの Dispose メソッドで解放されます。
Remarks
外部で生成した FIE 画像オブジェクトのハンドルを設定します。
FIE ハンドルとは FIE ライブラリで使用されるデータ構造のことです。 FIE ハンドルはいくつかの種類がありますが、ここでは F_OBJID_IMG_ROOT または F_OBJID_IMG_CHILD のことを意味します。 詳しくは FIE ライブラリ説明書をご参照ください。
is_attach に true を指定した場合、設定されたハンドルは、このクラスでは解放されません。ユーザー側で管理してください。 このクラスがアタッチしている間は hImage を解放しないでください。 このクラスの Dispose を呼び出すとアタッチを解除します。
自動的に解放したい場合は false を指定してください。 その場合、設定されたハンドルは、このクラスの Dispose メソッドで解放されます。\n
エラーにより当メソッドの処理が中断した場合は、is_attach に関わらず、 指定された hImage を解放しませんので、呼び出し元で解放してください。
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータが無効です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | オブジェクトが不正です。 |
Examples
ソースコード (1):
引数 is_attach に true を指定した場合のサンプルコードです。
ソースコード (2):
引数 is_attach に false を指定した場合のサンプルコードです。
引数 is_attach に true を指定した場合のサンプルコードです。
C# | Copy |
---|---|
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 SetFIE1() { 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()) { // 2) FIE 画像オブジェクトの設定. src.SetFIE(hImage, true); // -) 確認用. src.Save(Defs.ResultDir + "/Image.SetFIE1.png"); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } finally { // E) 手動で解放する必要があります. hImage.Dispose(); } } } } |
ソースコード (2):
引数 is_attach に false を指定した場合のサンプルコードです。
C# | Copy |
---|---|
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 SetFIE2() { 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); // 2) FIE 画像オブジェクトの設定. using (var src = new FVIL.Data.CFviImage()) { // !) 正常時は CFviImage が hImage を解放します. // 失敗した場合は、手動で解放する必要があります. src.SetFIE(hImage, false); // !) 2重解放を避ける為、Zero 初期化しておきます. hImage = IntPtr.Zero; // -) 確認用. src.Save(Defs.ResultDir + "/Image.SetFIE2.png"); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } finally { // E) SetFIE が失敗した時は手動で解放する必要があります. if (hImage != IntPtr.Zero) hImage.Dispose(); } } } } |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |