画像領域確保時のオプション [初期値:0、範囲:0=既定の動作,1=DIB を使用しない]

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

Syntax

C#
public virtual int AllocateOption { get; set; }
Visual Basic
Public Overridable Property AllocateOption As Integer
	Get
	Set

Return Value

Type: Int32

内部で画像オブジェクトの確保を行う際のオプションの設定または取得を行います。
このクラスの派生クラスは、ここに設定された値を SetSize(Int32, Int32, ImageType, Int32, Int32) option 引数に指定します。

Remarks

画像オブジェクトは、既定では BIN,UC8,RGB24,RGB32 の時、 Win32 の CreateDIBSection を使用して画像メモリを確保し、 この時得られたビットマップハンドルを保有します。 しかし、ビットマップハンドルなどの GDI リソースは保有する数に限りがあるので、 ビットマップハンドルを保有した画像オブジェクトを大量に生成すると、 GDI リソースを消費し、枯渇すると O/S の描画処理が行えなくなります。 上限は、約 10,000 個です。 (GDI リソースは表示機能でも使用しているので、アプリケーションの構成によって上限は変動します。)
これを回避するには、画像オブジェクトの SetSize メソッドに option=1 を指定します。 そうすると画像オブジェクトは CreateDIBSection を使用しないので、 物理メモリが許す限りインスタンスを生成できます。


許容値:

意味
0既定の動作
1DIB を使用しない

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

エラーコード:

ErrorCode メンバ内容
11FVIL.ErrorCode.INVALID_PARAMETER 指定された値が不正です。

Examples

サンプルコード (1):

画像処理クラスの Validate メソッドの内部で行われる SetSize に option=1 を指定する例です。

C# Copy imageCopy
FVIL.Data.CFviImage    src = FVIL.File.Function.LoadImageFile("./test.bmp");
FVIL.Data.CFviImage    dst = new FVIL.Data.CFviImage();
FVIL.Filter.CFviSobelFilter parser = new FVIL.Filter.CFviSobelFilter(src, dst);
parser.AllocateOption = 1;    // 1: DIBを使用しない.
parser.Validate();            // dst に対して SetSize を行う際に option=1 を指定する.

サンプルコード (2):

ビデオ入力クラスの ChangeImageSize メソッドの内部で行われる SetSize に option=1 を指定する例です。

C# Copy imageCopy
FVIL.Data.CFviImage            src = new FVIL.Data.CFviImage();
FVIL.Video.CFviVideoFVC06    video = FVIL.Video.CFviVideoFVC06();
video.Open( -1, 0 , -1 );
video.LoadIniFile( "C:/FVC06_IK-TF7C.ini" );
video.AllocateOption = 1;    // 1: DIBを使用しない.
video.ChangeImageSize(src);    // src に対して SetSize を行う際に option=1 を指定する.

Exceptions

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

See Also