Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual void SetSize( int horz, int vert, ImageType type, int ch, int alloc_option ) |
Visual Basic |
---|
Public Overridable Sub SetSize ( horz As Integer, vert As Integer, type As ImageType, ch As Integer, alloc_option As Integer ) |
Parameters
- horz
- Type: System..::..Int32
画像領域の横方向サイズ (pixel) [1~] ※ 0 を指定すると解放します。
- vert
- Type: System..::..Int32
画像領域の縦方向サイズ (pixel) [1~] ※ 0 を指定すると解放します。
- type
- Type: FVIL..::..ImageType
画像種別
- ch
- Type: System..::..Int32
チャネル数 [1~16]
- alloc_option
- Type: System..::..Int32
オプション (0:既定の動作、1:DIBを使用しない)
Remarks
指定されたサイズで現在の画像データ領域を再確保します。
変更前の画像が内部メモリの場合は、画像データはすべて解放されて新たに画像メモリが確保されます。 変更前と変更後の画像サイズ・画像種別・チャネル数が一致する場合でも、領域は再確保されます。 変更前の画像がアタッチされていた場合は、デタッチされて新たに内部画像メモリが確保されます。
ビット深度は以下の条件によって設定されます。
- type に変更があった場合: メモリが確保されるビット深度に変更されます。
- type に変更が無い場合: ビット深度は変更されません。
設定された値を変更する場合は Depth を使用してください。
設定されている処理ウィンドウは全面に初期化されます。
-
0: 既定の動作
CreateDIBSection を使用してメモリを確保します。(但し、指定された型(type)が BIN,UC8,RGB24,RGB32 の時のみ)
利点は CFviDisplay で描画する際の CPU 負荷を低減できることです。
欠点は 確保時の時間が長いことです。
この他に後述の制限があります。 -
1: DIB を使用しない
fnFIE_img_root_alloc()()()() を使用してメモリを確保します。
利点と欠点は前述の CreateDIBSection と逆です。
画像処理に使用する一時的なバッファを確保する場合は、こちらの方が適しています。
CreateDIBSection は、2GB を超える領域を確保できません。 64bit アプリケーションでも、この挙動が見られます。 また、このオブジェクトがビットマップハンドルを保有する為、 インスタンスを大量に生成すると GDI リソースが枯渇します。 (GDI リソースの上限は OS 全体で 約 10,000 です。) alloc_option に 1 を指定すると、これらの制限を回避できます。 特にインスタンスを大量に生成する必要がある場合は、 DIB を使用しないようにしてください。
確保に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
17 | FVIL.ErrorCode.INVALID_IMAGESIZE | 引数に指定された画像サイズが不正です。 |
16 | FVIL.ErrorCode.INVALID_IMAGETYPE | 引数に指定された画像種別が不正です。 |
18 | FVIL.ErrorCode.INVALID_CHANNEL | 引数に指定されたチャネル数が不正です。 |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |