Freigeben über


Ink.HitTest-Methode (Point, Single)

Gibt die Strokes-Auflistung von Stroke-Objekten zurück, die vollständig innerhalb eines gegebenen Kreises liegen oder von diesem geschnitten werden.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Function HitTest ( _
    point As Point, _
    radius As Single _
) As Strokes
'Usage
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

Parameter

  • point
    Typ: System.Drawing.Point
    Der Mittelpunkt des Trefferüberprüfungskreises in Freihandbereichkoordinaten.
  • radius
    Typ: System.Single
    Der Radius des Trefferüberprüfungskreises in Freihandbereichkoordinaten.

Rückgabewert

Typ: Microsoft.Ink.Strokes
Die Strokes-Auflistung, die im angegebenen Bereich enthalten ist.

Hinweise

Wenn ein Stroke-Objekt den Kreis schneidet, wird das komplette Stroke-Objekt zurückgegeben

Diese Methode berechnet die Schnittmenge, wobei der gesamte Satz an DrawingAttributes-Attributen, die für das Stroke-Objekt gelten berücksichtigt wird, einschließlich der Width-Eigenschaft, die Einstellung derFitToCurve-Eigenschaft auf true oder false und der Wert der PenTip-Eigenschaft.

Nachdem eine Transformation vom Typ Drehung oder Verzerrung mit einem Stroke-Objekt oder einer Strokes-Auflistung durchgeführt wurde, sind die transformierten x- und y-Koordinaten nicht mehr konzentrisch in Bezug auf die ursprünglichen Koordinaten. Deswegen sollte der Radiusparameter nicht aus den x- oder y-Koordinaten berechnet werden.

Rufen Sie die Stroke.HitTest-Methode auf, um zu bestimmen, welche Punkte eines bekannten Stroke-Objekts den Testüberprüfungsbereich überschneiden.

Beispiele

In diesem Beispiel werden alle Stroke-Objekte eines InkOverlay, die einen Kreis überschneiden, dessen Mittelpunkt in der Mitte des Freihandsteuerelements liegt und der einen Radius von 120 Pixel hat, in rot geändert. Der Kreis, den ein Stroke-Objekt überschneiden muss, um für die Farbänderung in Betracht zu kommen, wird in Blau gezeichnet.

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();

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

Ink-Klasse

Ink-Member

HitTest-Überladung

Microsoft.Ink-Namespace

Strokes

ExtendedProperties