Proprietà InkCollector.Renderer
Aggiornamento: novembre 2007
Ottiene o imposta l'oggetto Renderer utilizzato per disegnare l'input penna.
Spazio dei nomi: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Sintassi
'Dichiarazione
Public Property Renderer As Renderer
'Utilizzo
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)
Valore proprietà
Tipo: Microsoft.Ink.Renderer
Oggetto Renderer utilizzato per disegnare l'input penna.
Note
Quando si gestiscono determinati messaggi della finestra, la modifica dell'oggetto Renderer, associato all'oggetto InkCollector può provocare una chiamata di funzione rientrante, generando risultati imprevisti. Ad esempio, passando a un Renderer diverso o modificando le relative trasformazioni all'interno di un gestore messaggi si potrebbe provocare una chiamata rientrante. Questo problema riguarda i messaggi seguenti: WM_ACTIVATE, WM_ACTIVATEAPP, WM_NCACTIVATE, WM_PAINT, WM_SYSCOMMAND se wParam è impostato su SC_HOTKEY o SC_TASKLIST e WM_SYSKEYDOWN (durante l'elaborazione delle combinazioni di tasti ALT-TAB o ALT-ESC). Questo problema è relativo alle applicazioni con modello di apartment a thread singolo.
Esempi
Nell'esempio seguente viene illustrato come utilizzare un oggetto Renderer alternativo per fornire una visualizzazione ingrandita di un oggetto InkCollector, un oggetto InkOverlay o un oggetto InkPicture.
Prima di essere utilizzato, l'oggetto Renderer alternativo viene inizializzato per fornire l'ingrandimento desiderato, mentre l'oggetto Renderer originale viene salvato in modo da poter tornare al comportamento di rendering predefinito.
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;
In risposta all'evento CheckChanged di un oggetto CheckBox, viene assegnato l'oggetto Renderer appropriato e viene ridisegnata l'area dell'input penna.
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();
Nell'esempio seguente viene mostrato l'utilizzo di un oggetto Renderer per convertire un rettangolo espresso in coordinate dello spazio di input penna in un rettangolo espresso in pixel.
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));
}
Piattaforme
Windows Vista
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Informazioni sulla versione
.NET Framework
Supportato in: 3.0