다음을 통해 공유


Renderer.Draw 메서드 (Bitmap, Stroke, DrawingAttributes)

업데이트: 2007년 11월

지정된 DrawingAttributes를 사용하여 지정된 BitmapStroke를 그립니다.

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

구문

‘선언
Public Sub Draw ( _
    destinationBitmap As Bitmap, _
    stroke As Stroke, _
    da As DrawingAttributes _
)
‘사용 방법
Dim instance As Renderer
Dim destinationBitmap As Bitmap
Dim stroke As Stroke
Dim da As DrawingAttributes

instance.Draw(destinationBitmap, stroke, _
    da)
public void Draw(
    Bitmap destinationBitmap,
    Stroke stroke,
    DrawingAttributes da
)
public:
void Draw(
    Bitmap^ destinationBitmap, 
    Stroke^ stroke, 
    DrawingAttributes^ da
)
public void Draw(
    Bitmap destinationBitmap,
    Stroke stroke,
    DrawingAttributes da
)
public function Draw(
    destinationBitmap : Bitmap, 
    stroke : Stroke, 
    da : DrawingAttributes
)

매개 변수

예제

이 예제에서는 InkOverlay 개체에 연결된 Ink 개체에서 가져온 전체 Strokes 컬렉션을 파일에서 로드된 비트맵 이미지에 그립니다.

또한 비트맵 이미지에 Stroke 개체를 그릴 때 수정된 DrawingAttributes 개체를 사용합니다. 수정 내용이 적용되어 스트로크의 색이 반전되고 너비가 두 배가 됩니다. 그런 다음 수정된 DrawingAttributes 개체를 da 매개 변수를 통해 Draw 메서드에 전달합니다. 원래 스트로크의 DrawingAttributes는 영향을 받지 않습니다.

Draw 메서드를 호출하면 이미지와 스트로크가 표시되지 않습니다. 대신 스트로크 렌더링 데이터를 비트맵 이미지 데이터와 병합하여 화면 표시를 준비합니다. Panel 개체에 연결된 Graphics 개체의 DrawImage 메서드를 호출하여 스트로크 렌더링 데이터로 수정된 비트맵 이미지를 표시합니다.

' get the Bitmap object loaded from a file
' scale the image to match the panel size
Dim bgImage As Bitmap = New Bitmap(New Bitmap(imageFileName), Me.panelForDraw.Size)
' Access to the Ink.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 allStrokes As Strokes = mInkOverlay.Ink.Strokes
    ' get a Renderer object. We could have used
    ' mInkOverlay.Renderer, this is another way
    Dim R As Renderer = New Renderer()
    ' traverse the stroke collection
    For Each oneStroke As Stroke In allStrokes
        Dim da As DrawingAttributes = oneStroke.DrawingAttributes.Clone()
        ' invert the stroke color
        Dim cR As Byte = Not da.Color.R
        Dim cG As Byte = Not da.Color.G
        Dim cB As Byte = Not da.Color.B
        da.Color = Color.FromArgb(da.Color.A, cR, cG, cB)
        ' double the stroke width
        da.Width *= 2
        ' draw the stroke
        R.Draw(bgImage, oneStroke, da)
    Next
End Using
' now display the bitmap (with the strokes) on the panel
Using g As Graphics = Me.panelForDraw.CreateGraphics()
    g.DrawImage(bgImage, 0, 0)
End Using
bgImage.Dispose()
// get the Bitmap object loaded from a file
// scale the image to match the panel size
Bitmap bgImage = new Bitmap(new Bitmap(imageFileName), this.panelForDraw.Size);
// Access to the Ink.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 allStrokes = mInkOverlay.Ink.Strokes)
{
    // get a Renderer object. We could have used
    // mInkOverlay.Renderer, this is another way
    Renderer R = new Renderer();
    // traverse the stroke collection
    foreach (Stroke oneStroke in allStrokes)
    {
        DrawingAttributes da = oneStroke.DrawingAttributes.Clone();
        // invert the stroke color
        byte cR = (byte)~(da.Color.R);
        byte cG = (byte)~(da.Color.G);
        byte cB = (byte)~(da.Color.B);
        da.Color = Color.FromArgb(da.Color.A, cR, cG, cB);
        // double the stroke width
        da.Width *= 2;
        // draw the stroke
        R.Draw(bgImage, oneStroke, da);
    }
}
// now display the bitmap (with the strokes) on the panel
using (Graphics g = this.panelForDraw.CreateGraphics())
{
    g.DrawImage(bgImage, 0, 0);
}
bgImage.Dispose();

플랫폼

Windows Vista

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

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

Renderer 클래스

Renderer 멤버

Draw 오버로드

Microsoft.Ink 네임스페이스