Freigeben über


Ink.DeleteStrokes-Methode (Strokes)

Löscht die angegebene Strokes-Auflistung aus dem Ink-Objekt.

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

Syntax

'Declaration
Public Sub DeleteStrokes ( _
    strokes As Strokes _
)
'Usage
Dim instance As Ink
Dim strokes As Strokes

instance.DeleteStrokes(strokes)
public void DeleteStrokes(
    Strokes strokes
)
public:
void DeleteStrokes(
    Strokes^ strokes
)
public void DeleteStrokes(
    Strokes strokes
)
public function DeleteStrokes(
    strokes : Strokes
)

Parameter

Hinweise

Das Ink-Objekt nummeriert die Indizes der verbleibenden Stroke-Objekte im Ink-Objekt neu, wenn sich die gelöschten Stroke-Objekte nicht am Ende der Strokes-Auflistung desInk-Objekts befinden.

Die DeleteStrokes-Methode kann zu einem Fehler führen, wenn sie aufgerufen wird, während der Benutzer Freihandeingaben vornimmt.

Hinweis

Eine Strokes-Auflistung, die auf eine Ink.Strokes-Eigenschaft zeigt, wird ungültig, wenn die in der ursprünglichen Auflistung enthaltenen Stroke-Objekte aus dem Ink-Objekt gelöscht werden. Wenn beispielsweise eine benannte Strokes-Auflistung namens theStrokesToo gegeben ist, die auf der Strokes-Eigenschaft theStrokes eines Ink-Objekts basiert, und Sie die DeleteStrokes-Methode für theStrokes aufrufen, dann wird theStrokesToo ungültig.

Rufen Sie die DeleteStroke-Methode auf, um nur jeweils ein einzelnes Stroke-Objekt zu löschen.

Beispiele

Dieses Beispiel enthält eine Beispielfunktion, die alle Stroke-Objekte des übergebenen InkOverlay-Objekts löscht, die einen Point links (im Pixelbereich) vom Parameter LeftInPixels enthalten.

Private Sub DeleteStrokesByLeft(ByVal mInkOverlay As InkOverlay, ByVal LeftInPixels As Integer)
    ' Create a Point object based upon the Left parameter
    Dim ptLeft As Point = New Point(LeftInPixels, 0)

    ' Convert the point from pixel space to ink space dimensions
    ' InkOverlay.AttachedControl must be set
    Using g As Graphics = mInkOverlay.AttachedControl.CreateGraphics()
        mInkOverlay.Renderer.PixelToInkSpace(g, ptLeft)
    End Using

    ' Create a Strokes object to hold strokes to be deleted
    Dim strokesToDelete As Strokes = mInkOverlay.Ink.CreateStrokes()

    ' Access to the Strokes property returns a copy of the Strokes object.
    ' This copy must be implicitly (via using statement) or explicitly
    ' disposed of in order to avoid a memory leak.
    Using currentStrokes As Strokes = mInkOverlay.Ink.Strokes
        For Each S As Stroke In currentStrokes
            For Each strokePoint As Point In S.GetPoints()
                If (strokePoint.X < ptLeft.X) Then
                    ' Note: A particluar Stroke object might have several
                    ' points to the left of ptLeft.X - Therefore, the
                    ' following statement will be executed multiple times.
                    ' Even so, the Add method will not add the same stroke twice. 
                    strokesToDelete.Add(S)
                End If
            Next
        Next
    End Using
    If strokesToDelete.Count > 0 Then
        mInkOverlay.Ink.DeleteStrokes(strokesToDelete)
        mInkOverlay.AttachedControl.Invalidate()
    End If
    strokesToDelete.Dispose()
End Sub
private void DeleteStrokesByLeft(InkOverlay mInkOverlay, int LeftInPixels)
{
    // Create a Point object based upon the Left parameter
    Point ptLeft = new Point(LeftInPixels, 0);

    // Convert the point from pixel space to ink space dimensions
    // InkOverlay.AttachedControl must be set
    using (Graphics g = mInkOverlay.AttachedControl.CreateGraphics())
    {
        mInkOverlay.Renderer.PixelToInkSpace(g, ref ptLeft);
    }

    // Create a Strokes object to hold strokes to be deleted
    Strokes strokesToDelete = mInkOverlay.Ink.CreateStrokes();

    // Access to the Strokes property returns a copy of the Strokes object.
    // This copy must be implicitly (via using statement) or explicitly
    // disposed of in order to avoid a memory leak.
    using (Strokes currentStrokes = mInkOverlay.Ink.Strokes)
    {
        foreach (Stroke S in currentStrokes)
        {
            foreach (Point strokePoint in S.GetPoints())
            {
                if (strokePoint.X < ptLeft.X)
                {
                    // Note: A particluar Stroke object might have several
                    // points to the left of ptLeft.X - Therefore, the
                    // following statement will be executed multiple times.
                    // Even so, the Add method will not add the same stroke twice. 
                    strokesToDelete.Add(S);
                }
            }
        }
    }

    if (strokesToDelete.Count > 0)
    {
        mInkOverlay.Ink.DeleteStrokes(strokesToDelete);
        mInkOverlay.AttachedControl.Invalidate();
    }
    strokesToDelete.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

DeleteStrokes-Überladung

Microsoft.Ink-Namespace

Strokes

Ink.DeleteStroke

Ink.CreateStroke

Ink.CreateStrokes