Stroke.HitTest 方法

定义

返回 Stroke 是相交还是位于特定的区域内。

重载

HitTest(Point)

返回一个指示当前 Stroke 是否与指定点相交的值。

HitTest(IEnumerable<Point>, Int32)

返回一个指示当前 Stroke 是否位于指定边界内的值。

HitTest(IEnumerable<Point>, StylusShape)

返回指定的路径是否使用指定的 StrokeStylusShape 相交。

HitTest(Point, Double)

返回一个指示当前 Stroke 是否与指定区域相交的值。

HitTest(Rect, Int32)

返回一个值,该值指示 Stroke 是否在指定矩形的边界内。

注解

可以使用这些 HitTest 方法来确定某一 Stroke 点相交还是位于指定边界内。

以下方法检查是否 Stroke 相交。

以下方法检查是否 Stroke 包围了。

HitTest(Point)

返回一个指示当前 Stroke 是否与指定点相交的值。

public:
 bool HitTest(System::Windows::Point point);
public bool HitTest (System.Windows.Point point);
member this.HitTest : System.Windows.Point -> bool
Public Function HitTest (point As Point) As Boolean

参数

point
Point

要进行命中测试的 Point

返回

Boolean

如果 point 与当前笔画相交,则为 true;否则为 false

示例

以下示例更改某个区域相交时其 Stroke 颜色。

Point myPoint = new Point(100, 100);

if (myStroke.HitTest(myPoint, 10))
{
    myStroke.DrawingAttributes.Color = Colors.Red;
}
Dim myPoint As New System.Windows.Point(100, 100)

If myStroke.HitTest(myPoint, 10) Then
    myStroke.DrawingAttributes.Color = Colors.Red
End If

注解

此方法的行为方式与重载 HitTest(Point, Double) 方法在 1 时 diameter 的行为相同。

适用于

HitTest(IEnumerable<Point>, Int32)

返回一个指示当前 Stroke 是否位于指定边界内的值。

public:
 bool HitTest(System::Collections::Generic::IEnumerable<System::Windows::Point> ^ lassoPoints, int percentageWithinLasso);
public bool HitTest (System.Collections.Generic.IEnumerable<System.Windows.Point> lassoPoints, int percentageWithinLasso);
member this.HitTest : seq<System.Windows.Point> * int -> bool
Public Function HitTest (lassoPoints As IEnumerable(Of Point), percentageWithinLasso As Integer) As Boolean

参数

lassoPoints
IEnumerable<Point>

Point 类型的数组,用于表示要进行命中测试的区域的边界。

percentageWithinLasso
Int32

Stroke 的长度百分比,Stroke 必须位于 lassoPoints 内,这样它才会被视为命中。

返回

Boolean

如果当前笔画位于指定边界内,则为 true;否则为 false

示例

如果笔划的至少 80% 位于笔划边界内 myPoints,则以下示例呈现紫色。

Point[] myPoints = new Point[] {
    new Point(100, 100),
    new Point(200, 100),
    new Point(200, 200),
    new Point(100, 200)};

if (aStroke.HitTest(myPoints, 80))
{
    aStroke.DrawingAttributes.Color = Colors.Purple;
}
Dim myPoints() As System.Windows.Point = _
                      {New System.Windows.Point(100, 100), _
                       New System.Windows.Point(200, 100), _
                       New System.Windows.Point(200, 200), _
                       New System.Windows.Point(100, 200)}

If aStroke.HitTest(myPoints, 80) Then
    aStroke.DrawingAttributes.Color = Colors.Purple
End If

注解

该方法 HitTest 连接第一个和最后一个点 lassoPoints 以创建套索。

适用于

HitTest(IEnumerable<Point>, StylusShape)

返回指定的路径是否使用指定的 StrokeStylusShape 相交。

public:
 bool HitTest(System::Collections::Generic::IEnumerable<System::Windows::Point> ^ path, System::Windows::Ink::StylusShape ^ stylusShape);
public bool HitTest (System.Collections.Generic.IEnumerable<System.Windows.Point> path, System.Windows.Ink.StylusShape stylusShape);
member this.HitTest : seq<System.Windows.Point> * System.Windows.Ink.StylusShape -> bool
Public Function HitTest (path As IEnumerable(Of Point), stylusShape As StylusShape) As Boolean

参数

path
IEnumerable<Point>

命中测试所遵循的路径 stylusShape

stylusShape
StylusShape

用于进行命中测试的 path 形状。

返回

Boolean

如果 stylusShape 与当前笔画相交,则为 true;否则为 false

示例

如果笔划与路径 myPoints相交,以下代码将呈现紫色的笔划。

Point[] myPoints = new Point[] {
    new Point(100, 100),
    new	Point(200, 100),
    new	Point(200, 200),
    new	Point(100, 200)};

EllipseStylusShape myStylus = new EllipseStylusShape(5.0, 5.0, 0.0);

if (aStroke.HitTest(myPoints, myStylus))
{
    aStroke.DrawingAttributes.Color = Colors.Purple;
}
Dim myPoints() As System.Windows.Point = _
                      {New System.Windows.Point(100, 100), _
                       New System.Windows.Point(200, 100), _
                       New System.Windows.Point(200, 200), _
                       New System.Windows.Point(100, 200)}

Dim myStylus As New EllipseStylusShape(5.0, 5.0, 0.0)

If aStroke.HitTest(myPoints, myStylus) Then
    aStroke.DrawingAttributes.Color = Colors.Purple
End If

注解

该方法 HitTest 用于 stylusShape 沿 eraserPath中测试笔划。

适用于

HitTest(Point, Double)

返回一个指示当前 Stroke 是否与指定区域相交的值。

public:
 bool HitTest(System::Windows::Point point, double diameter);
public bool HitTest (System.Windows.Point point, double diameter);
member this.HitTest : System.Windows.Point * double -> bool
Public Function HitTest (point As Point, diameter As Double) As Boolean

参数

point
Point

Point,用于定义要进行命中测试的区域的中心。

diameter
Double

要进行命中测试的区域的直径。

返回

Boolean

如果指定的区域与当前笔画相交,则为 true;否则为 false

示例

以下示例更改某个区域相交时其 Stroke 颜色。

Point myPoint = new Point(100, 100);

if (myStroke.HitTest(myPoint, 10))
{
    myStroke.DrawingAttributes.Color = Colors.Red;
}
Dim myPoint As New System.Windows.Point(100, 100)

If myStroke.HitTest(myPoint, 10) Then
    myStroke.DrawingAttributes.Color = Colors.Red
End If

适用于

HitTest(Rect, Int32)

返回一个值,该值指示 Stroke 是否在指定矩形的边界内。

public:
 bool HitTest(System::Windows::Rect bounds, int percentageWithinBounds);
public bool HitTest (System.Windows.Rect bounds, int percentageWithinBounds);
member this.HitTest : System.Windows.Rect * int -> bool
Public Function HitTest (bounds As Rect, percentageWithinBounds As Integer) As Boolean

参数

bounds
Rect

一个 Rect,表示要进行命中测试的区域边界。

percentageWithinBounds
Int32

Stroke 的长度百分比,Stroke 必须位于 percentageWithinBounds 内,这样它才会被视为命中。

返回

Boolean

如果当前笔划在 bounds 的边界内,则为 true;否则为 false

示例

如果至少 80% 的笔划位于笔划中 Rect,则以下示例将呈现紫色。

Rect rect1 = new Rect(100, 100, 100, 100);

if (aStroke.HitTest(rect1, 80))
{
    aStroke.DrawingAttributes.Color = Colors.Purple;
}
Dim rect1 As New Rect(100, 100, 100, 100)

If aStroke.HitTest(rect1, 80) Then
    aStroke.DrawingAttributes.Color = Colors.Purple
End If

适用于