다음을 통해 공유


Renderer.Draw 메서드 (IntPtr, Stroke)

업데이트: 2007년 11월

전달된 핸들을 소유하는 장치 컨텍스트에 Stroke 개체를 그립니다.

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

구문

‘선언
Public Sub Draw ( _
    hdc As IntPtr, _
    stroke As Stroke _
)
‘사용 방법
Dim instance As Renderer
Dim hdc As IntPtr
Dim stroke As Stroke

instance.Draw(hdc, stroke)
public void Draw(
    IntPtr hdc,
    Stroke stroke
)
public:
void Draw(
    IntPtr hdc, 
    Stroke^ stroke
)
public void Draw(
    IntPtr hdc,
    Stroke stroke
)
public function Draw(
    hdc : IntPtr, 
    stroke : Stroke
)

매개 변수

  • hdc
    형식: System.IntPtr
    그리는 데 사용할 장치 컨텍스트의 핸들입니다.

설명

참고

가능하면 IntPtr을 받는 오버로드 대신 Graphics 개체를 받는 적절한 오버로드를 사용해야 합니다.

SetViewTransform 메서드를 사용하는 방법에 따라 펜 너비가 적절히 조정됩니다. 즉, 펜 너비에 뷰 변환 행렬식의 제곱근을 곱하여 배율을 조정합니다.

참고

펜 너비를 명시적으로 설정하지 않은 경우 기본값은 53입니다. 올바른 경계 상자를 그리려면 펜 너비에 행렬식의 제곱근을 곱해야 합니다. 경계 상자의 높이와 너비는 각 방향으로 이 거리의 절반만큼 확장됩니다.

예를 들어 펜 너비가 53이고, 행렬식의 제곱근이 50이고, 경계 상자가 (0, 0, 1000, 1000)이라고 가정해 봅니다. 경계 상자에 대한 펜 너비 조정은 각 방향으로 (53*50)/2로 계산되고 오른쪽과 아래쪽은 1만큼 늘어납니다. 따라서 경계 상자가 (-1325,-1325,2326,2326)으로 렌더링됩니다.

Renderer 개체는 뷰포트 및 창 원점을 0,0으로 설정합니다. 기존 설정은 모두 저장 및 복원되지만 Renderer에서 사용되지는 않습니다. 스크롤을 수행하려면 Renderer 개체의 GetViewTransformGetObjectTransform 메서드를 사용합니다.

ms569824.alert_security(ko-kr,VS.90).gif보안 정보:

부분 신뢰 환경에서 사용하는 경우 이 메서드에 SecurityPermissionFlag.UnmanagedCode 권한 및 InkCollector에서 요구하는 권한이 필요합니다. 보안 문제 및 부분 신뢰에 대한 자세한 내용은 Security and Trust를 참조하십시오.

예제

이 예제에서는 Ink 개체에 Stroke 개체를 만듭니다. 이 스트로크는 알파벳 N과 같은 모양입니다. 스트로크를 만든 후 InkOverlay 개체에 연결된 Panel은 물론 다른 패널에도 스트로크를 표시합니다. 이 작업을 수행하기 위해 hdc 매개 변수에 다른 장치 컨텍스트 핸들 값을 전달하여 Draw 메서드를 두 번 호출합니다.

Using g1 As Graphics = mInkOverlay.AttachedControl.CreateGraphics()
    ' create the stroke
    Dim strokePoints() As Point = _
           { _
               New Point(200, 4000), _
               New Point(200, 200), _
               New Point(3000, 4000), _
               New Point(3000, 200) _
           }
    Dim oneStroke As Stroke = mInkOverlay.Ink.CreateStroke(strokePoints)
    ' draw the stroke on the control attached to InkOverlay
    ' get the handle to the device context
    Dim hdc1 As IntPtr = g1.GetHdc()
    ' draw the stroke
    mInkOverlay.Renderer.Draw(hdc1, oneStroke)
    ' release the handle to the device context
    g1.ReleaseHdc(hdc1)
    ' now draw the stroke on another control also
    Using g2 As Graphics = Me.panelForDraw.CreateGraphics()
        ' get the handle to the device context
        Dim hdc2 As IntPtr = g2.GetHdc()
        ' draw the stroke
        mInkOverlay.Renderer.Draw(hdc2, oneStroke)
        ' release the handle to the device context
        g2.ReleaseHdc(hdc1)
    End Using
End Using
using (Graphics g1 = mInkOverlay.AttachedControl.CreateGraphics())
{
    // create the stroke
    Point[] strokePoints = new Point[4] 
        { 
            new Point(200,  4000), 
            new Point(200, 200),
            new Point(3000, 4000),
            new Point(3000, 200)
        };

    Stroke oneStroke = mInkOverlay.Ink.CreateStroke(strokePoints);
    // draw the stroke on the control attached to InkOverlay
    // get the handle to the device context
    IntPtr hdc1 = g1.GetHdc();
    // draw the stroke
    mInkOverlay.Renderer.Draw(hdc1, oneStroke);
    // release the handle to the device context
    g1.ReleaseHdc(hdc1);
    // now draw the stroke on another control also
    using (Graphics g2 = this.panelForDraw.CreateGraphics())
    {
        // get the handle to the device context
        IntPtr hdc2 = g2.GetHdc();
        // draw the stroke
        mInkOverlay.Renderer.Draw(hdc2, oneStroke);
        // release the handle to the device context
        g2.ReleaseHdc(hdc1);
    }
}

플랫폼

Windows Vista

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

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

Renderer 클래스

Renderer 멤버

Draw 오버로드

Microsoft.Ink 네임스페이스

Renderer.SetViewTransform

DrawingAttributes

Strokes

Stroke