Compartir a través de


InkCollector.Renderer (Propiedad)

Actualización: noviembre 2007

Obtiene o establece el objeto Renderer que se usa para dibujar entradas manuscritas.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink (en Microsoft.Ink.dll)

Sintaxis

'Declaración
Public Property Renderer As Renderer
'Uso
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)

Valor de propiedad

Tipo: Microsoft.Ink.Renderer
Objeto Renderer que se usa para dibujar la entrada manuscrita.

Comentarios

Cuando se administran algunos mensajes de ventana, cambiar el objeto Renderer asociado con el objeto InkCollector puede producir una llamada de función reentrante, generando resultados inesperados. Por ejemplo, si se cambia a un objeto Renderer diferente o se modifican sus transformaciones dentro de un controlador de mensajes, se puede producir una llamada reentrante. Esto afecta a los siguientes mensajes: WM_ACTIVATE, WM_ACTIVATEAPP, WM_NCACTIVATE, WM_PAINT; WM_SYSCOMMAND si wParam se establece en SC_HOTKEY o SC_TASKLIST, y WM_SYSKEYDOWN (al procesar las combinaciones de teclas Alt-Tab o Alt-Esc). Es un problema relacionado con las aplicaciones del modelo de contenedor uniproceso.

Ejemplos

En el ejemplo siguiente se muestra cómo usar un objeto Renderer alternativo para proporcionar una vista con zoom de un objeto InkCollector, InkOverlay o InkPicture.

Antes de usar el objeto Renderer alternativo, se inicializa para proporcionar la transformación de zoom deseada y se guarda el objeto Renderer original para volver al comportamiento de representación predeterminado.

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;

En respuesta al evento CheckChanged de un objeto CheckBox, se asigna el objeto Renderer adecuado y se vuelve a dibujar el área de entrada manuscrita.

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

En el ejemplo siguiente se demuestra el uso de un objeto Renderer para convertir un rectángulo expresado en coordenadas de espacio de entrada manuscrita a uno expresado en coordenadas en píxeles.

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

Plataformas

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Información de versión

.NET Framework

Compatible con: 3.0

Vea también

Referencia

InkCollector (Clase)

InkCollector (Miembros)

Microsoft.Ink (Espacio de nombres)

Renderer