Renderer.PixelToInkSpace-Methode (Graphics, array<Point[]%)
Konvertiert ein Array von Positionen in Pixelbereichkoordinaten mithilfe eines Graphics-Objekts in ein Array von Positionen in Freihandbereichkoordinaten.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Sub PixelToInkSpace ( _
g As Graphics, _
ByRef pts As Point() _
)
'Usage
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[]
)
Parameter
- g
Typ: System.Drawing.Graphics
Das Graphics-Objekt, das für die Konvertierung verwendet werden soll. Die Quelle hierfür sind i. d. R. Ereignisargumente oder die System.Windows.Forms.Control.CreateGraphics-Methode.
- pts
Typ: array<System.Drawing.Point[]%
Das Array von Punkten, das in Freihandbereichspositionen konvertiert werden soll.
Hinweise
Die PixelToInkSpace-Methode führt eine Konvertierung von Pixel in Freihandbereicheinheiten durch (wobei eine HIMETRIC-Einheit = 0,01 mm ist), wendet die Umkehrung der Ansichtstransformation und anschließend die Objekttransformation an.
Beispiele
In diesem Beispiel werden alle Stroke-Objekte eines InkOverlay, bei denen mindestens 50% der Punkte innerhalb einer Begrenzungsauswahl liegen, in rot geändert. Die Auswahlpunkte der Begrenzung beschreiben ein Rechteck, das 45 Grad um die Mitte des Freihandsteuerelements gedreht ist. Die Begrenzungsauswahl wird durch Auswahlpunkte sichtbar gemacht, mit denen ein Stroke-Objekt erstellt wird.
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();
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