角度の算出(直線)
Namespace: FVIL.CaliperAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public static CFviAngle Angle(
CFviLine line,
ScanDirection direction
) |
Visual Basic |
---|
Public Shared Function Angle (
line As CFviLine,
direction As ScanDirection
) As CFviAngle |
Return Value
Type:
CFviAngle
直線の角度を算出して返します。範囲は走査方向によって異なります。
引数 direction に指定可能な値は下記の通りです。
FVIL.ScanDirection.Right | 傾き(-PI/2~+PI/2) |
FVIL.ScanDirection.Left | 傾き(PI/2~PI,-PI/2~-PI) |
FVIL.ScanDirection.Down | 傾き(0~PI) |
正常に実行できなかった場合は例外を発行します。
例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|
51 | FVIL.ErrorCode.LICENSE_ERROR |
ライセンスキーが見つからない為、実行できません。
または、 FVIL._SetUp.InitVisionLibrary が実行されていません。
|
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータに誤りがあります。 |
29 | FVIL.ErrorCode.NOT_CALCULABLE | 計算不可能です。 |
Examples
C# | Copy |
---|
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using fvalgcli;
namespace User.SampleCode
{
public partial class Caliper
{
[FvPluginExecute]
public void Angle_line_direct()
{
FVIL.Data.CFviLine line = new FVIL.Data.CFviLine(0.5, 1, -180);
FVIL.Data.CFviAngle resultD = FVIL.Caliper.Function.Angle(line, FVIL.ScanDirection.Down);
FVIL.Data.CFviAngle resultR = FVIL.Caliper.Function.Angle(line, FVIL.ScanDirection.Right);
{
FVIL.Data.CFviImage image = new FVIL.Data.CFviImage(320, 240, FVIL.ImageType.UC8, 1);
FVIL.GDI.CFviDisplay display = new FVIL.GDI.CFviDisplay();
FVIL.GDI.CFviOverlay overlay = new FVIL.GDI.CFviOverlay();
{
FVIL.GDI.CFviGdiLine gline1 = new FVIL.GDI.CFviGdiLine(line);
gline1.Pen.Color = Color.Green;
gline1.Pen.Width = 1;
FVIL.Data.CFviLine horz = new FVIL.Data.CFviLine( 0, 1, -120 );
FVIL.GDI.CFviGdiLine gline2 = new FVIL.GDI.CFviGdiLine(horz);
gline2.Pen.Color = Color.Green;
gline2.Pen.Width = 1;
gline2.Pen.Style = FVIL.GDI.PenStyle.Dot;
string str = String.Format("{0:F}°(Down)", resultD.Degree);
FVIL.GDI.CFviGdiString gStrD = new FVIL.GDI.CFviGdiString(str);
FVIL.Data.CFviPoint pos = FVIL.Caliper.Function.CrossPoint(line, horz);
gStrD.Position = new FVIL.Data.CFviPoint(pos.X + 30, pos.Y + 5);
gStrD.Font.Weight = FVIL.GDI.FontWeight.Thin;
gStrD.Font.Height = 12;
gStrD.Font.Width = 6;
gStrD.Color = Color.Red;
gStrD.Align = FVIL.GDI.TextAlign.Left | FVIL.GDI.TextAlign.Top;
FVIL.GDI.CFviGdiString gStrR = (FVIL.GDI.CFviGdiString)gStrD.Clone();
gStrR.Position = new FVIL.Data.CFviPoint(pos.X + 30, pos.Y - 5);
gStrR.Text = String.Format("{0:F}°(Right)", resultR.Degree);
gStrR.Align = FVIL.GDI.TextAlign.Left | FVIL.GDI.TextAlign.Bottom;
overlay.Figures.Add(gline1);
overlay.Figures.Add(gline2);
overlay.Figures.Add(gStrD);
overlay.Figures.Add(gStrR);
overlay.Enable = true;
}
display.Overlays.Add(overlay);
display.Image = image;
display.DisplayRect = image.Window;
FVIL.Data.CFviImage dstimage = new FVIL.Data.CFviImage();
display.SaveImage(dstimage);
FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/Caliper.Angle_line_direct.png", dstimage);
}
}
}
} |
Visual Basic | Copy |
---|
Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports fvalgcli
Namespace SampleCode
Public Partial Class Caliper
<FvPluginExecute> _
Public Sub Angle_line_direct()
Dim line As New FVIL.Data.CFviLine(0.5, 1, -180)
Dim resultD As FVIL.Data.CFviAngle = FVIL.Caliper.[Function].Angle(line, FVIL.ScanDirection.Down)
Dim resultR As FVIL.Data.CFviAngle = FVIL.Caliper.[Function].Angle(line, FVIL.ScanDirection.Right)
If True Then
Dim image As New FVIL.Data.CFviImage(320, 240, FVIL.ImageType.UC8, 1)
Dim display As New FVIL.GDI.CFviDisplay()
Dim overlay As New FVIL.GDI.CFviOverlay()
If True Then
Dim gline1 As New FVIL.GDI.CFviGdiLine(line)
gline1.Pen.Color = Color.Green
gline1.Pen.Width = 1
Dim horz As New FVIL.Data.CFviLine(0, 1, -120)
Dim gline2 As New FVIL.GDI.CFviGdiLine(horz)
gline2.Pen.Color = Color.Green
gline2.Pen.Width = 1
gline2.Pen.Style = FVIL.GDI.PenStyle.Dot
Dim str As String = [String].Format("{0:F}°(Down)", resultD.Degree)
Dim gStrD As New FVIL.GDI.CFviGdiString(str)
Dim pos As FVIL.Data.CFviPoint = FVIL.Caliper.[Function].CrossPoint(line, horz)
gStrD.Position = New FVIL.Data.CFviPoint(pos.X + 30, pos.Y + 5)
gStrD.Font.Weight = FVIL.GDI.FontWeight.Thin
gStrD.Font.Height = 12
gStrD.Font.Width = 6
gStrD.Color = Color.Red
gStrD.Align = FVIL.GDI.TextAlign.Left Or FVIL.GDI.TextAlign.Top
Dim gStrR As FVIL.GDI.CFviGdiString = DirectCast(gStrD.Clone(), FVIL.GDI.CFviGdiString)
gStrR.Position = New FVIL.Data.CFviPoint(pos.X + 30, pos.Y - 5)
gStrR.Text = [String].Format("{0:F}°(Right)", resultR.Degree)
gStrR.Align = FVIL.GDI.TextAlign.Left Or FVIL.GDI.TextAlign.Bottom
overlay.Figures.Add(gline1)
overlay.Figures.Add(gline2)
overlay.Figures.Add(gStrD)
overlay.Figures.Add(gStrR)
overlay.Enable = True
End If
display.Overlays.Add(overlay)
display.Image = image
display.DisplayRect = image.Window
Dim dstimage As New FVIL.Data.CFviImage()
display.SaveImage(dstimage)
FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/Caliper.Angle_line_direct.png", dstimage)
End If
End Sub
End Class
End Namespace |
Exceptions
See Also