다음을 통해 공유


InkOverlay.Draw 메서드

업데이트: 2007년 11월

잉크를 다시 그릴 InkOverlay 개체 내의 사각형을 설정합니다.

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

구문

‘선언
Public Sub Draw ( _
    rDrawRect As Rectangle _
)
‘사용 방법
Dim instance As InkOverlay
Dim rDrawRect As Rectangle

instance.Draw(rDrawRect)
public void Draw(
    Rectangle rDrawRect
)
public:
void Draw(
    Rectangle rDrawRect
)
public void Draw(
    Rectangle rDrawRect
)
public function Draw(
    rDrawRect : Rectangle
)

매개 변수

설명

rDrawRect 매개 변수가 nullNull 참조(Visual Basic의 경우 Nothing)(Microsoft Visual Basic.NET의 경우 Nothing)인 경우 전체 창을 다시 그립니다.

이 메서드는 프로그래밍 방식으로 변경된 스트로크를 다시 그리려는 경우에 사용하면 좋습니다. Control.Invalidate 메서드를 호출할 수도 있지만 이 경우 InkOverlay 개체의 모든 스트로크를 다시 그리게 됩니다. 이를 위해 Renderer.Draw 메서드를 호출할 수도 있지만 Renderer 개체는 Selection 컬렉션에 있는 스트로크가 어떤 것인지 알 수 없기 때문에 선택된 어떤 스트로크도 그릴 수 없습니다.

참고

AutoRedraw 속성이 true로 설정된 경우에만 그리기가 가능합니다.

예제

이 C# 예제에서는 Strokes 컬렉션에서 InkOverlay 개체인 theInkOverlay에 연결된 Ink 개체에 속하는 모든 스트로크의 색을 변경하는 방법을 보여 줍니다. Stroke 개체의 DrawingAttributes 속성을 변경하면 그 결과가 자동으로, 그리고 곧바로 나타나지 않습니다. theInkOverlay가 연결된 컨트롤에 대해 Invalidate 또는 Refresh 메서드를 호출하여 변경 결과를 나타낼 수 있지만 이 경우 theInkOverlay의 모든 Stroke 개체를 다시 그려야 합니다. 성능을 높이려면 Strokes 컬렉션의 경계 상자에 대해 Draw 메서드를 호출합니다. 이렇게 하면 경계 상자가 잉크 공간 좌표에서 픽셀 좌표로 변환됩니다.

private void ChangeColor(Strokes theStrokes, Color newColor)
{
    // Change the color of theStrokes
    foreach (Stroke stroke in theStrokes)
    {
        stroke.DrawingAttributes.Color = newColor;
    }

    // Convert bounding box to pixel coordinates
    Graphics g = CreateGraphics();
    Rectangle strokesBounds = theStrokes.GetBoundingBox();
    Point topLeft = strokesBounds.Location;
    Point bottomRight = strokesBounds.Location + strokesBounds.Size;
    theInkOverlay.Renderer.InkSpaceToPixel(g, ref topLeft);
    theInkOverlay.Renderer.InkSpaceToPixel(g, ref bottomRight);
    g.Dispose()
    strokesBounds = new Rectangle(topLeft, 
        new Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y));

    // Redraw the strokes
    theInkOverlay.Draw(strokesBounds);
}

이 Visual Basic .NET 예제에서는 Strokes 컬렉션에서 InkOverlay 개체인 theInkOverlay에 연결된 Ink 개체에 속하는 모든 스트로크의 색을 변경하는 방법을 보여 줍니다. Stroke 개체의 DrawingAttributes 속성을 변경하면 그 결과가 자동으로, 그리고 곧바로 나타나지 않습니다. theInkOverlay가 연결된 컨트롤에 대해 Invalidate 또는 Refresh 메서드를 호출하여 변경 결과를 나타낼 수 있지만 이 경우 theInkOverlay의 모든 Stroke 개체를 다시 그려야 합니다. 성능을 높이려면 Strokes 컬렉션의 경계 상자에 대해 Draw 메서드를 호출합니다. 이렇게 하면 경계 상자가 잉크 공간 좌표에서 픽셀 좌표로 변환됩니다.

Private Sub ChangeColor(ByVal theStrokes As Strokes, ByVal newColor As Color)
    ' Change the color of theStrokes
    Dim theStroke As Stroke
    For Each theStroke In theStrokes
        theStroke.DrawingAttributes.Color = newColor
    Next

    'Convert bounding box to pixel coordinates
    Dim g As Graphics = CreateGraphics()
    Dim strokesBounds As Rectangle = theStrokes.GetBoundingBox()
    Dim topLeft As Point = strokesBounds.Location
    Dim bottomRight As Point = New Point(strokesBounds.Right, strokesBounds.Bottom)
    theInkOverlay.Renderer.InkSpaceToPixel(g, topLeft)
    theInkOverlay.Renderer.InkSpaceToPixel(g, bottomRight)
    g.Dispose()
    strokesBounds = New Rectangle(topLeft, _
        New Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y))

    'Redraw the strokes
    theInkOverlay.Draw(strokesBounds)

    End Sub

플랫폼

Windows Vista

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

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

InkOverlay 클래스

InkOverlay 멤버

Microsoft.Ink 네임스페이스

Renderer.Draw