Condividi tramite


Metodo Ink.DeleteStrokes (Strokes)

Aggiornamento: novembre 2007

Elimina l'insieme Strokes specificato dall'oggetto Ink.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Sintassi

'Dichiarazione
Public Sub DeleteStrokes ( _
    strokes As Strokes _
)
'Utilizzo
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
)

Parametri

Note

L'oggetto Ink rinumera gli indici degli oggetti Stroke restanti nell'oggetto Ink se gli oggetti Stroke eliminati non si trovano alla fine dell'insieme Strokes dell'oggetto Ink.

Il metodo DeleteStrokes può comportare un errore se chiamato mentre l'utente sta disponendo attivamente l'input penna.

Nota

Un insieme Strokes che punta a una proprietà Ink.Strokes diventa non valido quando gli oggetti Stroke contenuti nell'insieme originale sono eliminati dall'oggetto Ink. Ad esempio, se esiste un insieme Strokes denominato, theStrokesToo, basato sulla proprietà Strokes di un oggetto InktheStrokes, e viene chiamano il metodo DeleteStrokes su theStrokes, l'oggetto theStrokesToo diventa non valido.

Per eliminare un unico oggetto Stroke alla volta, chiamare il metodo DeleteStroke.

Esempi

In questo esempio è contenuta una funzione di esempio che elimina tutti gli oggetti Stroke dell'oggetto InkOverlay passato contenente un puntoa sinistra (nello spazio del pixel) del parametro LeftInPixels.

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

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

Ink Classe

Membri Ink

Overload DeleteStrokes

Spazio dei nomi Microsoft.Ink

Strokes

Ink.DeleteStroke

Ink.CreateStroke

Ink.CreateStrokes