Freigeben über


InkCollector.Renderer-Eigenschaft

Ruft das Renderer-Objekt ab, mit dem Freihand gezeichnet wird, oder legt dieses fest.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Property Renderer As Renderer
'Usage
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)

Eigenschaftenwert

Typ: Microsoft.Ink.Renderer
Das Renderer-Objekt, das zum Zeichnen von Freihandeingaben verwendet wird.

Hinweise

Bei der Verarbeitung bestimmter Windows-Meldungen kann die Änderung des dem InkCollector-Objekt zugeordneten Renderer zu einem wieder eintretenden Aufruf führen, was unerwartete Ergebnisse nach sich ziehen kann. Ein wieder eintretender Aufruf kann sich z. B. ergeben, wenn innerhalb eines Meldungshandlers der Renderer gewechselt oder seine Transformationen geändert werden. Dies betrifft die folgenden Meldungen: WM_ACTIVATE, WM_ACTIVATEAPP, WM_NCACTIVATE, WM_PAINT sowie WM_SYSCOMMAND, wenn wParam auf SC_HOTKEY oder SC_TASKLIST festgelegt ist, und WM_SYSKEYDOWN (wenn die Tastenkombinationen ALT+TAB oder ALT+ESC verarbeitet werden). Dieses Problem tritt bei Anwendungen des Singlethread-Apartment-Modells auf.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie mithilfe eines anderen Renderer-Objekts eine vergrößerte Ansicht für ein InkCollector-Objekt, ein InkOverlay-Objekt oder ein InkPicture-Objekt bereitgestellt wird.

Vor der Verwendung des alternativen Renderer-Objekts wird es initialisiert, um die gewünschte Zoomtransformation bereitzustellen, und das ursprüngliche Renderer-Objekt wird gespeichert, um zum Standardrenderverhalten zurückzukehren.

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;

Als Reaktion auf das CheckChanged-Ereignis eines CheckBox-Objekts wird das entsprechende Renderer-Objekt zugewiesen, und der Freihandeingabebereich wird neu gezeichnet.

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();

Im folgenden Beispiel wird die Verwendung eines Renderer-Objekts veranschaulicht, um ein in Freihandbereich-Koordinaten angegebenes Rechteck in ein Rechteck zu konvertieren, dessen Koordinaten in Pixel angegeben werden.

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));
}

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

InkCollector-Klasse

InkCollector-Member

Microsoft.Ink-Namespace

Renderer