Ink.HitTest, méthode (Point, Single)
Mise à jour : November 2007
Retourne la collection Strokes des objets Stroke situés complètement à l'intérieur d'un cercle donné ou coupés par celui-ci.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
Public Function HitTest ( _
point As Point, _
radius As Single _
) As Strokes
'Utilisation
Dim instance As Ink
Dim point As Point
Dim radius As Single
Dim returnValue As Strokes
returnValue = instance.HitTest(point, _
radius)
public Strokes HitTest(
Point point,
float radius
)
public:
Strokes^ HitTest(
Point point,
float radius
)
public Strokes HitTest(
Point point,
float radius
)
public function HitTest(
point : Point,
radius : float
) : Strokes
Paramètres
- point
Type : System.Drawing.Point
Centre du cercle du test de positionnement, en coordonnées d'espace d'entrée manuscrite.
- radius
Type : System.Single
Rayon du cercle du test de positionnement, en coordonnées d'espace d'entrée manuscrite.
Valeur de retour
Type : Microsoft.Ink.Strokes
Collection Strokes contenue dans la zone spécifiée.
Notes
Si un objet Stroke coupe le cercle, le Stroke complet est retourné.
Cette méthode calcule l'intersection, en considérant l'ensemble des DrawingAttributes qui s'appliquent à l'objet Stroke, y compris le Width, selon que la propriété FitToCurve a la valeur true ou false, ainsi que la valeur de la propriété PenTip.
Après la rotation ou la distorsion d'un objet Stroke ou d'une collection Strokes, les coordonnées x et y modifiées ne sont plus concentriques avec les coordonnées d'origine. C'est pourquoi le paramètre du rayon ne doit pas être calculé à partir des coordonnées x ou y.
Pour définir quels points d'un objet Stroke donné croisent la zone du test de positionnement, appelez la méthode Stroke.HitTest.
Exemples
Dans cet exemple, tous les objets Stroke d'un InkOverlay qui coupent un cercle dont le point central est situé au milieu du contrôle d'entrée manuscrite et d'un rayon de 120 pixels, deviennent rouges. Le cercle qu'un Stroke doit croiser pour modifier sa couleur est dessiné en bleu.
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 rectangle used to draw the circle around the center
Dim hitTestRect As Rectangle = New Rectangle(centerPt.X - RadiusPixel, centerPt.Y - RadiusPixel, RadiusPixel * 2, RadiusPixel * 2)
' get our graphics object
Dim g As Graphics = inkControl.CreateGraphics()
' convert centerPt to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, centerPt)
' tempPt is used only to convert RadiusPixel to ink coords
Dim tempPt As Point = New Point(RadiusPixel, 0)
mInkOverlay.Renderer.PixelToInkSpace(g, tempPt)
' now tempPt.X = radius in ink coordinates
' Find strokes hit by the circle described by centerPt and radius
Dim hitStrokes As Strokes = mInkOverlay.Ink.HitTest(centerPt, tempPt.X)
' change the strokes that fall inside the circle to red
hitStrokes.ModifyDrawingAttributes(New DrawingAttributes(Color.Red))
' invalidate the ink control
inkControl.Invalidate()
' let the Invalidate message process
Application.DoEvents()
' draw the circle we used for the hit test
g.DrawEllipse(Pens.Blue, hitTestRect)
g.Dispose()
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 rectangle used to draw the circle around the center
Rectangle hitTestRect = new Rectangle(centerPt.X - RadiusPixel, centerPt.Y - RadiusPixel, RadiusPixel * 2, RadiusPixel * 2);
// get our graphics object
Graphics g = inkControl.CreateGraphics();
// convert centerPt to ink space coordinates
mInkOverlay.Renderer.PixelToInkSpace(g, ref centerPt);
// tempPt is used only to convert RadiusPixel to ink coords
Point tempPt = new Point(RadiusPixel, 0);
mInkOverlay.Renderer.PixelToInkSpace(g, ref tempPt);
// now tempPt.X = radius in ink coordinates
// Find strokes hit by the circle described by centerPt and radius
Strokes hitStrokes = mInkOverlay.Ink.HitTest(centerPt, tempPt.X);
// change the strokes that fall inside the circle to red
hitStrokes.ModifyDrawingAttributes(new DrawingAttributes(Color.Red));
// invalidate the ink control
inkControl.Invalidate();
// let the Invalidate message process
Application.DoEvents();
// draw the circle we used for the hit test
g.DrawEllipse(Pens.Blue, hitTestRect);
g.Dispose();
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