Partager via


Ink.HitTest, méthode (array<Point[], Single)

Mise à jour : November 2007

Retourne la collection Strokes contenue dans les limites de la sélection polyligne.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
Public Function HitTest ( _
    points As Point(), _
    percentIntersect As Single _
) As Strokes
'Utilisation
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

Paramètres

  • points
    Type : array<System.Drawing.Point[]
    Points utilisés dans les limites de la sélection pour sélectionner les objets Stroke. La zone de sélection est à l'intérieur des limites de la sélection, à leur première intersection.
  • percentIntersect
    Type : System.Single
    Pourcentage des points du trait qui doivent être situés dans la limite de la sélection pour être considérés comme un positionnement.

Valeur de retour

Type : Microsoft.Ink.Strokes
Collection Strokes contenue dans la zone spécifiée.

Notes

Si la limite de la sélection ne se recoupe pas, la méthode HitTest ajoute un point à la fin du tableau pour créer une ligne droite du premier au dernier point. Si la limite est une ligne droite sans zone dans la limite de sélection, aucun objet Stroke n'est sélectionné.

Cette méthode lève une exception si le paramètre des points a la valeur nullune référence null (Nothing en Visual Basic) (Nothing en Microsoft Visual Basic .NET) ou contient moins de trois points.

Exemples

Dans cet exemple, tous les objets Stroke d'un InkOverlay qui ont au moins 50 % de leurs points à l'intérieur d'une sélection de limite sont mis en rouge. Les points de la sélection de limite décrivent un rectangle qui pivote de 45 degrés autour du centre du contrôle d'entrée manuscrite. On peut rendre visible la sélection de limite en utilisant les points de sélection servant à créer un objet 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();

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

Ink, classe

Membres Ink

HitTest, surcharge

Microsoft.Ink, espace de noms

Strokes

ExtendedProperties