Sdílet prostřednictvím


Renderer.PixelToInkSpace Method (Graphics, Point%)

Converts a location in pixel space coordinates to be a location in ink space coordinates by using a Graphics object for the conversion.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Sub PixelToInkSpace ( _
    g As Graphics, _
    ByRef pt As Point _
)
'Usage
Dim instance As Renderer 
Dim g As Graphics 
Dim pt As Point

instance.PixelToInkSpace(g, pt)
public void PixelToInkSpace(
    Graphics g,
    ref Point pt
)
public:
void PixelToInkSpace(
    Graphics^ g, 
    Point% pt
)
public function PixelToInkSpace(
    g : Graphics, 
    pt : Point
)

Parameters

Remarks

The PixelToInkSpace method converts from pixel to ink space—where one HIMETRIC unit = .01mm, applies the inverse of the view transform, and then applies the object transform.

Examples

This example shows a method that deletes all of the Stroke objects of the passed InkOverlay object that contain a Point to the left (in pixel space) of parameter LeftInPixels.

Private Sub DeleteStrokesByLeft(ByVal mInkOverlay As InkOverlay, ByVal LeftInPixels As Integer)
    ' Create a Point object based upon the Left parameter 
    Dim ptLeft As Point = New Point(LeftInPixels, 0)

    ' Convert the point from pixel space to ink space dimensions 
    ' InkOverlay.AttachedControl must be set 
    Using g As Graphics = mInkOverlay.AttachedControl.CreateGraphics()
        mInkOverlay.Renderer.PixelToInkSpace(g, ptLeft)
    End Using 

    ' Create a Strokes object to hold strokes to be deleted 
    Dim strokesToDelete As Strokes = mInkOverlay.Ink.CreateStrokes()

    ' Access to the Strokes property returns a copy of the Strokes object. 
    ' This copy must be implicitly (via using statement) or explicitly 
    ' disposed of in order to avoid a memory leak. 
    Using currentStrokes As Strokes = mInkOverlay.Ink.Strokes
        For Each S As Stroke In currentStrokes
            For Each strokePoint As Point In S.GetPoints()
                If (strokePoint.X < ptLeft.X) Then 
                    ' Note: A particluar Stroke object might have several 
                    ' points to the left of ptLeft.X - Therefore, the 
                    ' following statement will be executed multiple times. 
                    ' Even so, the Add method will not add the same stroke twice. 
                    strokesToDelete.Add(S)
                End If 
            Next 
        Next 
    End Using 
    If strokesToDelete.Count > 0 Then
        mInkOverlay.Ink.DeleteStrokes(strokesToDelete)
        mInkOverlay.AttachedControl.Invalidate()
    End If
    strokesToDelete.Dispose()
End Sub
private void DeleteStrokesByLeft(InkOverlay mInkOverlay, int LeftInPixels)
{
    // Create a Point object based upon the Left parameter
    Point ptLeft = new Point(LeftInPixels, 0);

    // Convert the point from pixel space to ink space dimensions 
    // InkOverlay.AttachedControl must be set 
    using (Graphics g = mInkOverlay.AttachedControl.CreateGraphics())
    {
        mInkOverlay.Renderer.PixelToInkSpace(g, ref ptLeft);
    }

    // Create a Strokes object to hold strokes to be deleted
    Strokes strokesToDelete = mInkOverlay.Ink.CreateStrokes();

    // Access to the Strokes property returns a copy of the Strokes object. 
    // This copy must be implicitly (via using statement) or explicitly 
    // disposed of in order to avoid a memory leak. 
    using (Strokes currentStrokes = mInkOverlay.Ink.Strokes)
    {
        foreach (Stroke S in currentStrokes)
        {
            foreach (Point strokePoint in S.GetPoints())
            {
                if (strokePoint.X < ptLeft.X)
                {
                    // Note: A particluar Stroke object might have several 
                    // points to the left of ptLeft.X - Therefore, the 
                    // following statement will be executed multiple times. 
                    // Even so, the Add method will not add the same stroke twice. 
                    strokesToDelete.Add(S);
                }
            }
        }
    }

    if (strokesToDelete.Count > 0)
    {
        mInkOverlay.Ink.DeleteStrokes(strokesToDelete);
        mInkOverlay.AttachedControl.Invalidate();
    }
    strokesToDelete.Dispose();
}

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

Renderer Class

Renderer Members

PixelToInkSpace Overload

Microsoft.Ink Namespace

Renderer.InkSpaceToPixel