多角形の描画
Namespace: FVIL.PaintAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public static void DrawPolygon( CFviImage image, CFviPolyline polyline, IEnumerable<double> densities, FillMode fill_mode ) |
Visual Basic |
---|
Public Shared Sub DrawPolygon ( image As CFviImage, polyline As CFviPolyline, densities As IEnumerable(Of Double), fill_mode As FillMode ) |
Parameters
- image
- Type: FVIL.Data..::..CFviImage
描画先の画像オブジェクト
- polyline
- Type: FVIL.Data..::..CFviPolyline
頂点群 (1点以上)
- densities
- Type: System.Collections.Generic..::..IEnumerable<(Of <(<'Double>)>)>
濃度値
- fill_mode
- Type: FVIL.Paint..::..FillMode
塗り潰しの方法
Remarks
与えられた頂点座標より多角形を求めて画像上に描画します。
引数の fill_mode には FillMode に定義された定数を指定してください。
与えられた頂点群は、閉空間として扱われます。(引数 polyline の Close メンバの値は無視されます。) 但し、頂点数が 1 の場合は点を、2 の場合は線分を描画します。
塗り潰しは、ポリゴンと輪郭とスキャンラインの交点を求め、 求められた各点の間を水平成分で結んでいく処理を各スキャンラインについて繰り返すことで実現されています。 その為、例えば一筆書きで描かれた星型のように内側にできる閉じた領域は塗り潰されません。
引数 densities の要素数は、 image のチャネル数分必要です。 但し、画像種別が FVIL.ImageType.RGB32 の時は、チャネル数に関係なく 3 個(RGBプレーンの数)分必要です。
処理可能な画像種別とチャネル及び濃度値の扱い:
引数の fill_mode には FillMode に定義された定数を指定してください。
与えられた頂点群は、閉空間として扱われます。(引数 polyline の Close メンバの値は無視されます。) 但し、頂点数が 1 の場合は点を、2 の場合は線分を描画します。
塗り潰しは、ポリゴンと輪郭とスキャンラインの交点を求め、 求められた各点の間を水平成分で結んでいく処理を各スキャンラインについて繰り返すことで実現されています。 その為、例えば一筆書きで描かれた星型のように内側にできる閉じた領域は塗り潰されません。
引数 densities の要素数は、 image のチャネル数分必要です。 但し、画像種別が FVIL.ImageType.RGB32 の時は、チャネル数に関係なく 3 個(RGBプレーンの数)分必要です。
処理可能な画像種別とチャネル及び濃度値の扱い:
画像種別 | チャネル数 | 濃度値の扱い |
---|---|---|
BIN | 1~16 | 各要素の濃度値を 0/1 に正規化して、各チャネルに適用します。 |
UC8 | 1~16 | 各要素の濃度値を 0~255 に正規化して、各チャネルに適用します。 |
S16 | 1~16 | 各要素の濃度値を -32768~32767 に正規化して、各チャネルに適用します。 |
US16 | 1~16 | 各要素の濃度値を 0~65535 に正規化して、各チャネルに適用します。 |
D64 | 1~16 | 各要素の濃度値を、各チャネルに適用します。 |
RGB32 | 1 | 各要素(0,1,2)の濃度値を 0~255 に正規化して、それぞれ 各プレーン(R,G,B)に適用します。 尚、ビット深度は 8bit にのみ対応しています。それ以外のビット深度の時はエラーは返さず無視されます。 |
実行に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数に指定された値が不正です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | 画像オブジェクトが不正です。 |
93 | FVIL.ErrorCode.INVALID_IMAGETYPE | 画像種別が不正です。 |
99 | FVIL.ErrorCode.INVALID_CHANNEL | 画像チャネル数が不正です。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |