アタッチ (画像オブジェクト指定)
Namespace: FVIL.DataAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual void Attach( CFviImage image ) |
Visual Basic |
---|
Public Overridable Sub Attach ( image As CFviImage ) |
Parameters
- image
- Type: FVIL.Data..::..CFviImage
画像オブジェクト
Remarks
引数に指定された画像オブジェクトにアタッチします。 このオブジェクトが保有する画像メモリは事前に破棄されます。 ビット深度・処理ウィンドウ・画像情報は、引数 src の値が複製されます。
この関数は、1つの画像メモリを複数の画像オブジェクトで共有する為に使用します。 例えば、処理ウィンドウを複数割り当てたい場合に使用できます。 アタッチを行うと、複数の画像オブジェクトで1つの画像メモリアドレスを保有する事になります。 アタッチ先の画像オブジェクトが、この領域を再確保したり破棄したりすると、 アタッチ中の画像オブジェクトが保有する画像メモリアドレスは無効な領域を指し示している事になります。 無効な領域へアクセスした場合は、アプリケーションが異常終了しますのでご注意ください。 アタッチは一時的な利用にのみ使用する事を推奨します。
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリが不足しています。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数に指定された値が不正です。 |
23 | FVIL.ErrorCode.NOT_ALLOCATED | 画像アドレスに IntPtr.Zero が指定されています。 |
17 | FVIL.ErrorCode.INVALID_IMAGESIZE | 画像サイズに 0 が指定されています。 |
16 | FVIL.ErrorCode.INVALID_IMAGETYPE | 画像種別が無効です。 |
18 | FVIL.ErrorCode.INVALID_CHANNEL | チャネル数が無効です。 |
Examples
ソースコード:
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 Attach1() { try { using (var src = new FVIL.Data.CFviImage()) using (var act = new FVIL.Data.CFviImage()) using (var dst = new FVIL.Data.CFviImage()) { // (1) 画像生成. src.Load(Defs.TestImageDir + "/floppy_RGB.jpg"); // (2) 画像オブジェクトへのアタッチ. act.Attach(src); // -) 何らかの処理. { act.Window = new System.Drawing.Rectangle(20, 30, 200, 120); var sobel = new FVIL.Filter.CFviSobelFilter(act, dst); sobel.CalcMode = FVIL.Filter.SobelCalcMode.SQRTMode; sobel.BorderMode = FVIL.BorderMode.Continuous; sobel.BorderValue = 0.0; sobel.Validate(); sobel.Execute(); } // -) 確認用. act.Save(Defs.ResultDir + "/Image.Attach1-act.png"); dst.Save(Defs.ResultDir + "/Image.Attach1-dst.png"); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } } } } |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |