Compartir a través de


InkOverlay.Draw (Método)

Actualización: noviembre 2007

Establece un rectángulo en el que se puede volver a dibujar la entrada manuscrita dentro del objeto InkOverlay.

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

Sintaxis

'Declaración
Public Sub Draw ( _
    rDrawRect As Rectangle _
)
'Uso
Dim instance As InkOverlay
Dim rDrawRect As Rectangle

instance.Draw(rDrawRect)
public void Draw(
    Rectangle rDrawRect
)
public:
void Draw(
    Rectangle rDrawRect
)
public void Draw(
    Rectangle rDrawRect
)
public function Draw(
    rDrawRect : Rectangle
)

Parámetros

  • rDrawRect
    Tipo: System.Drawing.Rectangle
    Rectángulo en el que se puede volver a dibujar la entrada manuscrita, en coordenadas en píxeles.

Comentarios

Cuando el parámetro rDrawRect es nullreferencia null (Nothing en Visual Basic) (Nothing en Microsoft Visual Basic .NET), se vuelve a dibujar toda la ventana.

Este método resulta adecuado para volver a dibujar los trazos que se han cambiado mediante programación. También puede llamar al método Control.Invalidate, pero esto anula todos los trazos del objeto InkOverlay que se han vuelto a dibujar. También puede llamar al método Renderer.Draw para este propósito, pero el objeto Renderer no puede dibujar ningún trazo cuando se selecciona porque no tiene conocimiento de qué trazos están en la colección Selection.

Nota

La propiedad AutoRedraw se debe establecer en true para que esto ocurra.

Ejemplos

Este ejemplo de C# es un método que cambia el color de todos los trazos de una colección Strokes que pertenece al objeto Ink asociado a un objeto InkOverlay, theInkOverlay. El cambio de la propiedad DrawingAttributes de un objeto Stroke no se ve automática ni inmediatamente. Puede llamar al método Invalidate o Refresh en el control asociado a theInkOverlay, pero esto hace que se vuelvan a dibujar todos los objetos Stroke en theInkOverlay. Para lograr un mejor rendimiento, utilice el método Draw en el cuadro de límite de la colección Strokes. Tenga en cuenta que esto conlleva la conversión del cuadro de límite de coordenadas espaciales de entrada manuscrita a coordenadas en píxeles.

private void ChangeColor(Strokes theStrokes, Color newColor)
{
    // Change the color of theStrokes
    foreach (Stroke stroke in theStrokes)
    {
        stroke.DrawingAttributes.Color = newColor;
    }

    // Convert bounding box to pixel coordinates
    Graphics g = CreateGraphics();
    Rectangle strokesBounds = theStrokes.GetBoundingBox();
    Point topLeft = strokesBounds.Location;
    Point bottomRight = strokesBounds.Location + strokesBounds.Size;
    theInkOverlay.Renderer.InkSpaceToPixel(g, ref topLeft);
    theInkOverlay.Renderer.InkSpaceToPixel(g, ref bottomRight);
    g.Dispose()
    strokesBounds = new Rectangle(topLeft, 
        new Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y));

    // Redraw the strokes
    theInkOverlay.Draw(strokesBounds);
}

Este ejemplo de Visual Basic .NET es un método que cambia el color de todos los trazos de una colección Strokes que pertenece al objeto Ink asociado a un objeto InkOverlay, theInkOverlay. El cambio de la propiedad DrawingAttributes de un objeto Stroke no se ve automática ni inmediatamente. Puede llamar al método Invalidate o Refresh en el control asociado a theInkOverlay, pero esto hace que se vuelvan a dibujar todos los objetos Stroke de theInkOverlay. Para lograr un mejor rendimiento, utilice el método Draw en el cuadro de límite de la colección Strokes. Tenga en cuenta que esto conlleva la conversión del cuadro de límite de coordenadas espaciales de entrada manuscrita a coordenadas en píxeles.

Private Sub ChangeColor(ByVal theStrokes As Strokes, ByVal newColor As Color)
    ' Change the color of theStrokes
    Dim theStroke As Stroke
    For Each theStroke In theStrokes
        theStroke.DrawingAttributes.Color = newColor
    Next

    'Convert bounding box to pixel coordinates
    Dim g As Graphics = CreateGraphics()
    Dim strokesBounds As Rectangle = theStrokes.GetBoundingBox()
    Dim topLeft As Point = strokesBounds.Location
    Dim bottomRight As Point = New Point(strokesBounds.Right, strokesBounds.Bottom)
    theInkOverlay.Renderer.InkSpaceToPixel(g, topLeft)
    theInkOverlay.Renderer.InkSpaceToPixel(g, bottomRight)
    g.Dispose()
    strokesBounds = New Rectangle(topLeft, _
        New Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y))

    'Redraw the strokes
    theInkOverlay.Draw(strokesBounds)

    End Sub

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

InkOverlay (Clase)

InkOverlay (Miembros)

Microsoft.Ink (Espacio de nombres)

Renderer.Draw