Stroke.NearestPoint 메서드 (Point, Single%)
업데이트: 2007년 11월
지정된 Point에 가장 가까운 Stroke 개체의 위치 및 점과 Stroke 개체 사이의 거리를 반환합니다.
네임스페이스: Microsoft.Ink
어셈블리: Microsoft.Ink(Microsoft.Ink.dll)
구문
‘선언
Public Function NearestPoint ( _
pt As Point, _
<OutAttribute> ByRef distance As Single _
) As Single
‘사용 방법
Dim instance As Stroke
Dim pt As Point
Dim distance As Single
Dim returnValue As Single
returnValue = instance.NearestPoint(pt, _
distance)
public float NearestPoint(
Point pt,
out float distance
)
public:
float NearestPoint(
Point pt,
[OutAttribute] float% distance
)
public float NearestPoint(
Point pt,
/** @attribute OutAttribute */ /** @ref */float distance
)
public function NearestPoint(
pt : Point,
distance : float
) : float
매개 변수
- pt
형식: System.Drawing.Point
잉크 공간 좌표의 지정된 점입니다.
- distance
형식: System.Single%
부동 소수점 인덱스로 나타낸 점에서 Stroke 개체까지의 거리입니다.
반환 값
형식: System.Single
지정된 Point에 가장 가까운 Stroke 개체의 위치를 반환합니다.
설명
부동 소수점 인덱스는 Stroke 개체의 두 점 사이에 있는 위치를 나타내는 부동 소수점 값입니다. 예를 들어 스트로크에서 첫 번째 점이 0.0이고 두 번째 점이 1.0인 경우 0.5는 첫 번째 점과 두 번째 점 사이의 중간 지점입니다. 마찬가지로 부동 소수점 인덱스 값 37.25는 스트로크의 37번과 38번 점 사이의 선에서 25% 위치를 나타냅니다.
예제
이 예제에서는 InkOverlay 개체의 선택된 각 Stroke 개체를 조사합니다. 그런 다음 NearestPoint 메서드를 사용하여 잉크 캔버스의 중심에 가장 가까운 스트로크의 점과 중심에서 이 점까지의 거리(HIMETRIC 단위)를 확인합니다. 거리가 2000 HIMETRIC 단위 이상인 경우 가장 가까운 점을 잉크 캔버스의 중심에 연결하는 새 Stroke 개체가 만들어집니다.
Dim inkControl As Control = mInkOverlay.AttachedControl
' get the center of the ink control
Dim centerPt As Point = New Point(inkControl.Width / 2, inkControl.Height / 2)
Using g As Graphics = inkControl.CreateGraphics()
' convert center point to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, centerPt)
End Using
' examine each selected stroke
For Each S As Stroke In mInkOverlay.Selection
' get the index of the nearest point
Dim distance As Single
Dim fIdx As Single = S.NearestPoint(centerPt, distance)
If distance >= 2000.0 Then
' create points from the center to the nearest point on the stroke
Dim connectPts() As Point = _
{ _
centerPt, _
S.GetPoint(CType(Math.Round(fIdx, MidpointRounding.ToEven), Integer)) _
}
' create the stroke
S.Ink.CreateStroke(connectPts)
End If
Next
Control inkControl = mInkOverlay.AttachedControl;
// get the center of the ink control
Point centerPt = new Point(inkControl.Width / 2, inkControl.Height / 2);
using (Graphics g = inkControl.CreateGraphics())
{
// convert center point to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, ref centerPt);
}
// examine each selected stroke
foreach (Stroke S in mInkOverlay.Selection)
{
// get the index of the nearest point
float distance;
float fIdx = S.NearestPoint(centerPt, out distance);
if (distance >= 2000.0)
{
// create points from the center to the nearest point on the stroke
Point[] connectPts = new Point[2]
{
centerPt,
S.GetPoint((int)Math.Round(fIdx, MidpointRounding.ToEven))
};
// create the stroke
S.Ink.CreateStroke(connectPts);
}
}
플랫폼
Windows Vista
.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
3.0에서 지원