Compartir a través de


Ink.HitTest (Método) (array<Point[], Single)

Actualización: noviembre 2007

Devuelve la colección Strokes incluida dentro de un límite de selección de polilínea.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink (en Microsoft.Ink.dll)

Sintaxis

'Declaración
Public Function HitTest ( _
    points As Point(), _
    percentIntersect As Single _
) As Strokes
'Uso
Dim instance As Ink
Dim points As Point()
Dim percentIntersect As Single
Dim returnValue As Strokes

returnValue = instance.HitTest(points, _
    percentIntersect)
public Strokes HitTest(
    Point[] points,
    float percentIntersect
)
public:
Strokes^ HitTest(
    array<Point>^ points, 
    float percentIntersect
)
public Strokes HitTest(
    Point[] points,
    float percentIntersect
)
public function HitTest(
    points : Point[], 
    percentIntersect : float
) : Strokes

Parámetros

  • points
    Tipo: array<System.Drawing.Point[]
    Los puntos que se usan en el límite de la selección para seleccionar los objetos Stroke. El área de selección es el área dentro del límite de la selección en la que el límite forma una intersección primero.
  • percentIntersect
    Tipo: System.Single
    Porcentaje de puntos del trazo que deben estar contenidos en el límite de la selección para que se considere un acierto.

Valor devuelto

Tipo: Microsoft.Ink.Strokes
La colección Strokes incluida en el área especificada.

Comentarios

Si el límite de la selección no forma intersección consigo mismo, el método HitTest agrega un punto al final de la matriz para crear una línea recta desde el primer punto al último punto. Si el límite es una línea recta sin ningún área dentro del límite de la selección, no se selecciona ningún objeto Stroke.

Este método produce una excepción si el parámetro de puntos es nullreferencia null (Nothing en Visual Basic) (Nothing en Microsoft Visual Basic.NET) o contiene menos de tres puntos.

Ejemplos

En este ejemplo, cualquier objeto Stroke de un objeto InkOverlay que tenga por lo menos el 50% de sus puntos dentro de una selección de límite cambia a rojo. Los puntos de selección de límite describen un rectángulo que se gira 45 grados alrededor del centro del control de entrada manuscrita. La selección de límite se hace visible usando los puntos de selección para crear un objeto Stroke.

Const RadiusPixel As Integer = 120
' get the control. InkOverlay.AttachedControl must be set
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)
' create the boundary points. These points describe a rectangle
' that is rotated around the center 45 degrees (a diamond)
Dim boundaryPts() As Point = _
        { _
            New Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)), _
            New Point(centerPt.X + (RadiusPixel / 2), centerPt.Y), _
            New Point(centerPt.X, centerPt.Y + (RadiusPixel / 2)), _
            New Point(centerPt.X - (RadiusPixel / 2), centerPt.Y), _
            New Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)) _
        }

Using g As Graphics = inkControl.CreateGraphics()
    ' convert boundary points to ink space coordinates
    mInkOverlay.Renderer.PixelToInkSpace(g, boundaryPts)
End Using
' show the tilted rectangle (diamond) by creating a stroke
mInkOverlay.Ink.CreateStroke(boundaryPts)
' Find strokes that are at least 50% inside the boundary points
Dim hitStrokes As Strokes = mInkOverlay.Ink.HitTest(boundaryPts, 50.0F)
' change the strokes that fall inside the boundary points to red
hitStrokes.ModifyDrawingAttributes(New DrawingAttributes(Color.Red))
' invalidate the ink control
inkControl.Invalidate()
const int RadiusPixel = 120;
// get the control. InkOverlay.AttachedControl must be set
Control inkControl = mInkOverlay.AttachedControl;
// get the center of the ink control
Point centerPt = new Point(inkControl.Width / 2, inkControl.Height / 2);
// create the boundary points. These points describe a rectangle
// that is rotated around the center 45 degrees (a diamond)
Point[] boundaryPts = new Point[5] 
    {
        new Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)),
        new Point(centerPt.X + (RadiusPixel / 2), centerPt.Y),
        new Point(centerPt.X, centerPt.Y + (RadiusPixel / 2)),
        new Point(centerPt.X - (RadiusPixel / 2), centerPt.Y),
        new Point(centerPt.X, centerPt.Y - (RadiusPixel / 2))
    };

using (Graphics g = inkControl.CreateGraphics())
{
    // convert boundary points to ink space coordinates
    mInkOverlay.Renderer.PixelToInkSpace(g, ref boundaryPts);
}

// show the tilted rectangle (diamond) by creating a stroke
mInkOverlay.Ink.CreateStroke(boundaryPts);
// Find strokes that are at least 50% inside the boundary points
Strokes hitStrokes = mInkOverlay.Ink.HitTest(boundaryPts, 50.0f);
// change the strokes that fall inside the boundary points to red
hitStrokes.ModifyDrawingAttributes(new DrawingAttributes(Color.Red));
// invalidate the ink control
inkControl.Invalidate();

Plataformas

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Información de versión

.NET Framework

Compatible con: 3.0

Vea también

Referencia

Ink (Clase)

Ink (Miembros)

HitTest (Sobrecarga)

Microsoft.Ink (Espacio de nombres)

Strokes

ExtendedProperties