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에서 지원