多角形の描画
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_draw_polygon( FHANDLE hImg, DOUBLE_PTR val, f_draw_fill_mode mode, DPNT_T_PTR pnts, int num ) |
Visual Basic |
---|
Public Shared Function fnFIE_draw_polygon ( hImg As FHANDLE, val As DOUBLE_PTR, mode As f_draw_fill_mode, pnts As DPNT_T_PTR, num As Integer ) As Integer |
Parameters
- hImg
- Type: fvalgcli..::..FHANDLE
画像のハンドル(type:bin,uc8,s16,us16,double,rgbq)
- val
- Type: fvalgcli..::..DOUBLE_PTR
濃度値を格納した配列の先頭アドレス
- mode
- Type: fvalgcli..::..f_draw_fill_mode
描画モード- F_DRAW_LINE :図形の線のみを描画
- F_DRAW_FILL_IN :図形の内側を塗りつぶし
- F_DRAW_FILL_OUT :図形の外側を塗りつぶし
- pnts
- Type: fvalgcli..::..DPNT_T_PTR
頂点群
- num
- Type: System..::..Int32
頂点数
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_INVALID_IMAGE | 画像オブジェクトの異常 |
F_ERR_INVALID_PARAM | パラメータ異常 |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { /// <summary> /// 多角形の描画. /// </summary> [FvPluginExecute] public void fnFIE_draw_polygon() { int status = (int)f_err.F_ERR_NONE; FHANDLE hImg = FHANDLE.Zero; // 処理画像. DOUBLE_PTR val = IntPtr.Zero; // 濃度値を格納した配列(チャネル数分) DPNT_T_PTR pnts = IntPtr.Zero; // 頂点群. const f_draw_fill_mode mode = f_draw_fill_mode.F_DRAW_FILL_IN; // 描画モード. int num = 5; // 頂点数. const int width = 128; const int height = 64; try { hImg = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, width, height); api.fnFIE_img_clear(hImg, 128 / 2); int channels = api.fnFIE_img_get_channels(hImg); // 配列の確保(アンマネージヒープに確保される). val = DOUBLE_PTR.alloc(channels); pnts = DPNT_T_PTR.alloc(num); for (int i = 0; i < channels; i++) val[i] = 128; // 多角形の設定. pnts[0] = DPNT_T.init(width / 2, 0); pnts[1] = DPNT_T.init(width - 1, height - 1); pnts[2] = DPNT_T.init(0, height / 4); pnts[3] = DPNT_T.init(width - 1, height / 4); pnts[4] = DPNT_T.init(0, height - 1); // 処理の実行. status = api.fnFIE_draw_polygon(hImg, val, mode, pnts, num); // エラー判定. Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); // 処理画像の保存. api.fnFIE_save_png(ResultDir + "/fnFIE_draw_polygon.png", hImg, -1); } finally { // オブジェクトの開放. hImg.Dispose(); val.Dispose(); pnts.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' 多角形の描画. ''' </summary> <FvPluginExecute> _ Public Sub fnFIE_draw_polygon() Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim hImg As FHANDLE = FHANDLE.Zero ' 処理画像. Dim val As DOUBLE_PTR = IntPtr.Zero ' 濃度値を格納した配列(チャネル数分) Dim pnts As DPNT_T_PTR = IntPtr.Zero ' 頂点群. Const mode As f_draw_fill_mode = f_draw_fill_mode.F_DRAW_FILL_IN ' 描画モード. Dim num As Integer = 5 ' 頂点数. Const width As Integer = 128 Const height As Integer = 64 Try hImg = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), 1, width, height) api.fnFIE_img_clear(hImg, 128 \ 2) Dim channels As Integer = api.fnFIE_img_get_channels(hImg) ' 配列の確保(アンマネージヒープに確保される). val = DOUBLE_PTR.alloc(channels) pnts = DPNT_T_PTR.alloc(num) For i As Integer = 0 To channels - 1 val(i) = 128 Next ' 多角形の設定. pnts(0) = DPNT_T.init(width \ 2, 0) pnts(1) = DPNT_T.init(width - 1, height - 1) pnts(2) = DPNT_T.init(0, height \ 4) pnts(3) = DPNT_T.init(width - 1, height \ 4) pnts(4) = DPNT_T.init(0, height - 1) ' 処理の実行. status = api.fnFIE_draw_polygon(hImg, val, mode, pnts, num) ' エラー判定. Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) ' 処理画像の保存. api.fnFIE_save_png(ResultDir & "/fnFIE_draw_polygon.png", hImg, -1) Finally ' オブジェクトの開放. hImg.Dispose() val.Dispose() pnts.Dispose() End Try End Sub End Class |