다음을 통해 공유


Stroke.NearestPoint 메서드 (Point)

업데이트: 2007년 11월

지정된 Point에 가장 가까운 Stroke 개체의 위치를 반환합니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink(Microsoft.Ink.dll)

구문

‘선언
Public Function NearestPoint ( _
    pt As Point _
) As Single
‘사용 방법
Dim instance As Stroke
Dim pt As Point
Dim returnValue As Single

returnValue = instance.NearestPoint(pt)
public float NearestPoint(
    Point pt
)
public:
float NearestPoint(
    Point pt
)
public float NearestPoint(
    Point pt
)
public function NearestPoint(
    pt : Point
) : float

매개 변수

반환 값

형식: System.Single
지정된 Point에 가장 가까운 Stroke 개체의 위치를 반환합니다.

설명

부동 소수점 인덱스는 Stroke 개체의 두 점 사이에 있는 위치를 나타내는 부동 소수점 값입니다. 예를 들어 스트로크에서 첫 번째 점이 0.0이고 두 번째 점이 1.0인 경우 0.5는 첫 번째 점과 두 번째 점 사이의 중간 지점입니다. 마찬가지로 부동 소수점 인덱스 값 37.25는 스트로크의 37번과 38번 점 사이의 선에서 25% 위치를 나타냅니다.

예제

이 예제에서는 InkOverlay 개체의 선택된 각 Stroke 개체를 조사합니다. 그런 다음 NearestPoint 메서드를 사용하여 잉크 캔버스의 중심에 가장 가까운 스트로크의 점을 확인합니다. 그 다음 가장 가까운 점을 잉크 캔버스의 중심에 연결하는 새 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 fIdx As Single = S.NearestPoint(centerPt)
    ' 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)
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 fIdx = S.NearestPoint(centerPt);
    // 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에서 지원

참고 항목

참조

Stroke 클래스

Stroke 멤버

NearestPoint 오버로드

Microsoft.Ink 네임스페이스

Ink.NearestPoint

Ink.HitTest

Stroke.GetRectangleIntersections