次の方法で共有


Stroke.NearestPoint メソッド (Point)

指定した 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 オブジェクト内の 2 つのポイントの間のある場所を表す浮動小数点値です。たとえば、0.0 がストローク内の最初のポイントで、1.0 がストローク内の 2 番目のポイントの場合、0.5 が最初のポイントと 2 番目のポイントの間の中間です。同様に、浮動小数点インデックス値 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