다음을 통해 공유


Ink.DeleteStrokes 메서드 (Strokes)

업데이트: 2007년 11월

Ink 개체에서 지정된 Strokes 컬렉션을 삭제합니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink(Microsoft.Ink.dll)

구문

‘선언
Public Sub DeleteStrokes ( _
    strokes As Strokes _
)
‘사용 방법
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
)

매개 변수

설명

삭제된 Stroke 개체가 Ink 개체의 Strokes 컬렉션에 있지 않은 경우 Ink 개체는 Ink 개체에 있는 나머지 Stroke 개체 인덱스의 번호를 다시 지정합니다.

사용자가 실제로 잉크를 칠할 때 DeleteStrokes 메서드를 호출하면 오류가 발생할 수 있습니다.

참고

원래 컬렉션에 포함된 Stroke 개체가 Ink 개체에서 삭제되면 Ink.Strokes 속성을 가리키는 Strokes 컬렉션이 무효화됩니다. 예를 들어 Ink 개체의 Strokes 속성인 theStrokes를 기반으로 하는 theStrokesToo라는 Strokes 컬렉션이 있고, theStrokes에 대해 DeleteStrokes 메서드를 호출하는 경우 theStrokesToo가 무효화됩니다.

Stroke 개체를 한 번에 하나씩만 삭제하려면 DeleteStroke 메서드를 호출합니다.

예제

이 예제에는 LeftInPixels 매개 변수 왼쪽(픽셀 공간)에 Point가 들어 있는 전달된 InkOverlay 개체의 모든 Stroke 개체를 삭제하는 샘플 함수가 나와 있습니다.

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

플랫폼

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

Ink 클래스

Ink 멤버

DeleteStrokes 오버로드

Microsoft.Ink 네임스페이스

Strokes

Ink.DeleteStroke

Ink.CreateStroke

Ink.CreateStrokes