Compartir a través de


Renderer.PixelToInkSpace (Método) (Graphics, array<Point[]%)

Actualización: noviembre 2007

Convierte una matriz de ubicaciones que están en coordenadas espaciales en píxeles a coordenadas espaciales de entrada manuscrita utilizando un objeto Graphics para la conversión.

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

Sintaxis

'Declaración
Public Sub PixelToInkSpace ( _
    g As Graphics, _
    ByRef pts As Point() _
)
'Uso
Dim instance As Renderer
Dim g As Graphics
Dim pts As Point()

instance.PixelToInkSpace(g, pts)
public void PixelToInkSpace(
    Graphics g,
    ref Point[] pts
)
public:
void PixelToInkSpace(
    Graphics^ g, 
    array<Point>^% pts
)
public void PixelToInkSpace(
    Graphics g,
    /** @ref */Point[] pts
)
public function PixelToInkSpace(
    g : Graphics, 
    pts : Point[]
)

Parámetros

  • pts
    Tipo: array<System.Drawing.Point[]%
    Matriz de puntos que se desea convertir en ubicaciones espaciales de entrada manuscrita.

Comentarios

El método PixelToInkSpace convierte los píxeles en espacio de entrada manuscrita (en el que una unidad HIMETRIC = 0,01 mm), aplica el inverso de la transformación de vista y, a continuación, aplica la transformación de objeto.

Ejemplos

En este ejemplo, cualquier objeto Stroke de un objeto InkOverlay que tenga por lo menos el 50% de sus puntos dentro de una selección de límite se cambia a rojo. Los puntos de selección de límite describen un rectángulo que se gira 45 grados alrededor del centro del control de entrada manuscrita. La selección de límite se hace visible utilizando los puntos de selección para crear un objeto Stroke.

Const RadiusPixel As Integer = 120
' get the control. InkOverlay.AttachedControl must be set
Dim inkControl As Control = mInkOverlay.AttachedControl
' get the center of the ink control
Dim centerPt As Point = New Point(inkControl.Width / 2, inkControl.Height / 2)
' create the boundary points. These points describe a rectangle
' that is rotated around the center 45 degrees (a diamond)
Dim boundaryPts() As Point = _
        { _
            New Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)), _
            New Point(centerPt.X + (RadiusPixel / 2), centerPt.Y), _
            New Point(centerPt.X, centerPt.Y + (RadiusPixel / 2)), _
            New Point(centerPt.X - (RadiusPixel / 2), centerPt.Y), _
            New Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)) _
        }

Using g As Graphics = inkControl.CreateGraphics()
    ' convert boundary points to ink space coordinates
    mInkOverlay.Renderer.PixelToInkSpace(g, boundaryPts)
End Using
' show the tilted rectangle (diamond) by creating a stroke
mInkOverlay.Ink.CreateStroke(boundaryPts)
' Find strokes that are at least 50% inside the boundary points
Dim hitStrokes As Strokes = mInkOverlay.Ink.HitTest(boundaryPts, 50.0F)
' change the strokes that fall inside the boundary points to red
hitStrokes.ModifyDrawingAttributes(New DrawingAttributes(Color.Red))
' invalidate the ink control
inkControl.Invalidate()
const int RadiusPixel = 120;
// get the control. InkOverlay.AttachedControl must be set
Control inkControl = mInkOverlay.AttachedControl;
// get the center of the ink control
Point centerPt = new Point(inkControl.Width / 2, inkControl.Height / 2);
// create the boundary points. These points describe a rectangle
// that is rotated around the center 45 degrees (a diamond)
Point[] boundaryPts = new Point[5] 
    {
        new Point(centerPt.X, centerPt.Y - (RadiusPixel / 2)),
        new Point(centerPt.X + (RadiusPixel / 2), centerPt.Y),
        new Point(centerPt.X, centerPt.Y + (RadiusPixel / 2)),
        new Point(centerPt.X - (RadiusPixel / 2), centerPt.Y),
        new Point(centerPt.X, centerPt.Y - (RadiusPixel / 2))
    };

using (Graphics g = inkControl.CreateGraphics())
{
    // convert boundary points to ink space coordinates
    mInkOverlay.Renderer.PixelToInkSpace(g, ref boundaryPts);
}

// show the tilted rectangle (diamond) by creating a stroke
mInkOverlay.Ink.CreateStroke(boundaryPts);
// Find strokes that are at least 50% inside the boundary points
Strokes hitStrokes = mInkOverlay.Ink.HitTest(boundaryPts, 50.0f);
// change the strokes that fall inside the boundary points to red
hitStrokes.ModifyDrawingAttributes(new DrawingAttributes(Color.Red));
// invalidate the ink control
inkControl.Invalidate();

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

Renderer (Clase)

Renderer (Miembros)

PixelToInkSpace (Sobrecarga)

Microsoft.Ink (Espacio de nombres)

Renderer.InkSpaceToPixel