다음을 통해 공유


InkCollector.Renderer 속성

업데이트: 2007년 11월

잉크를 그리는 데 사용되는 Renderer 개체를 가져오거나 설정합니다.

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

구문

‘선언
Public Property Renderer As Renderer
‘사용 방법
Dim instance As InkCollector
Dim value As Renderer

value = instance.Renderer

instance.Renderer = value
public Renderer Renderer { get; set; }
public:
property Renderer^ Renderer {
    Renderer^ get ();
    void set (Renderer^ value);
}
/** @property */
public Renderer get_Renderer()
/** @property */
public  void set_Renderer(Renderer value)
public function get Renderer () : Renderer
public function set Renderer (value : Renderer)

속성 값

형식: Microsoft.Ink.Renderer
잉크를 그리는 데 사용되는 Renderer 개체입니다.

설명

특정 창 메시지를 처리할 때 InkCollector와 연결된 Renderer를 변경하면 함수 호출이 재진입되어 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 다른 Renderer로 변경하거나 메시지 처리기 내에서 변환을 수정하면 호출이 재진입할 수 있습니다. 이는 WM_ACTIVATE, WM_ACTIVATEAPP, WM_NCACTIVATE, WM_PAINT, WM_SYSKEYDOWN(Alt+Tab 또는 Alt+Esc 키 조합을 처리하는 경우) 메시지에 적용됩니다. wParam이 SC_HOTKEY 또는 SC_TASKLIST로 설정된 경우에는 WM_SYSCOMMAND도 여기에 해당합니다. 이는 단일 스레드 아파트 모델 응용 프로그램에 적용되는 문제입니다.

예제

다음 예제에서는 대체 Renderer 개체를 사용하여 InkCollector 개체, InkOverlay 개체 또는 InkPicture 개체에 대한 확대/축소 뷰를 제공하는 방법을 보여 줍니다.

대체 Renderer 개체를 사용하기 전에 이 개체를 초기화하여 원하는 확대/축소 변환을 제공하고 기본 렌더링 동작으로 돌아갈 수 있도록 Renderer 개체를 저장합니다.

zoomRenderer = New Renderer()
Dim zoomBy2 As Matrix = New Matrix()
zoomBy2.Scale(2, 2)
zoomRenderer.SetObjectTransform(zoomBy2)
' mInkObject can be InkCollector, InkOverlay, or InkPicture
origRenderer = mInkObject.Renderer
zoomRenderer = new Renderer();
Matrix zoomBy2 = new Matrix();
zoomBy2.Scale(2, 2);
zoomRenderer.SetObjectTransform(zoomBy2);
// mInkObject can be InkCollector, InkOverlay, or InkPicture
origRenderer = mInkObject.Renderer;

CheckBox 개체의 CheckChanged 이벤트에 응답하여 해당 Renderer 개체가 할당되고 잉크 영역이 다시 그려집니다.

If DirectCast(sender, CheckBox).Checked Then
    ' mInkObject can be InkCollector, InkOverlay, or InkPicture
    mInkObject.Renderer = zoomRenderer
Else
    mInkObject.Renderer = origRenderer
End If
' refresh to show the transformed ink. In production code
' you should invalidate only the necessary area that is 
' affected by the transformation but for simplicity here
' we will invalidate the entire form
Me.Refresh()
if (((CheckBox)sender).Checked)
{
    // mInkObject can be InkCollector, InkOverlay, or InkPicture
    mInkObject.Renderer = zoomRenderer;
}
else
{
    mInkObject.Renderer = origRenderer;
}
// refresh to show the transformed ink. In production code
// you should invalidate only the necessary area that is 
// affected by the transformation but for simplicity here
// we will invalidate the entire form
this.Refresh();

다음 예제에서는 Renderer 개체를 사용하여 잉크 공간에 표시된 사각형을 픽셀 좌표로 표시된 사각형으로 변환하는 방법을 보여 줍니다.

Private Function InkSpaceToPixelRectangle(ByVal inkRectangle As Rectangle) As Rectangle
    ' Get points for corners of rectangle
    Dim leftTop As Point = inkRectangle.Location
    Dim rightBottom As Point = New Point(inkRectangle.Right, inkRectangle.Bottom)

    ' Convert using a Renderer object
    Dim tGraphics As Graphics = CreateGraphics()
    Dim tRenderer As Renderer = New Renderer()
    tRenderer.InkSpaceToPixel(tGraphics, leftTop)
    tRenderer.InkSpaceToPixel(tGraphics, rightBottom)

    ' Clean up
    tGraphics.Dispose()

    ' Return new rectangle
    Return New Rectangle(leftTop, New Size(rightBottom.X - leftTop.X, rightBottom.Y - leftTop.Y))
End Function
private Rectangle InkSpaceToPixelRectangle(Rectangle inkRectangle)
{
    // Get points for corners of rectangle
    Point leftTop = inkRectangle.Location;
    Point rightBottom = new Point(inkRectangle.Right, inkRectangle.Bottom);

    // Convert using a Renderer object
    Graphics tGraphics = CreateGraphics();
    Renderer tRenderer = new Renderer();
    tRenderer.InkSpaceToPixel(tGraphics, ref leftTop);
    tRenderer.InkSpaceToPixel(tGraphics, ref rightBottom);

    // Clean up
    tGraphics.Dispose();

    // Return new rectangle
    return new Rectangle(leftTop, new Size(rightBottom.X - leftTop.X, rightBottom.Y - leftTop.Y));
}

플랫폼

Windows Vista

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

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

InkCollector 클래스

InkCollector 멤버

Microsoft.Ink 네임스페이스

Renderer