Delegato InkCollectorNewInAirPacketsEventHandler
Aggiornamento: novembre 2007
Rappresenta il metodo che gestisce l'evento NewInAirPackets di un oggetto InkCollector.
Spazio dei nomi: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Sintassi
'Dichiarazione
Public Delegate Sub InkCollectorNewInAirPacketsEventHandler ( _
sender As Object, _
e As InkCollectorNewInAirPacketsEventArgs _
)
'Utilizzo
Dim instance As New InkCollectorNewInAirPacketsEventHandler(AddressOf HandlerMethod)
public delegate void InkCollectorNewInAirPacketsEventHandler(
Object sender,
InkCollectorNewInAirPacketsEventArgs e
)
public delegate void InkCollectorNewInAirPacketsEventHandler(
Object^ sender,
InkCollectorNewInAirPacketsEventArgs^ e
)
/** @delegate */
public delegate void InkCollectorNewInAirPacketsEventHandler(
Object sender,
InkCollectorNewInAirPacketsEventArgs e
)
JScript non supporta i delegati.
Parametri
- sender
Tipo: System.Object
Oggetto InkCollector di origine di questo evento.
- e
Tipo: Microsoft.Ink.InkCollectorNewInAirPacketsEventArgs
Oggetto InkCollectorNewInAirPacketsEventArgs che contiene i dati dell'evento.
Note
Quando un utente sposta la penna vicino alla tavoletta e il cursore si trova all'interno della finestra dell'oggetto InkCollector oppure sposta il mouse all'interno della finestra associata dell'oggetto InkCollector, viene creato un pacchetto aereo. Gli eventi NewInAirPackets vengono generati rapidamente e il gestore dell'evento deve essere veloce o le prestazioni ne risentiranno.
Quando si crea un delegato InkCollectorNewInAirPacketsEventHandler, viene identificato il metodo che gestisce l'evento. Per associare l'evento al gestore in uso, aggiungere all'evento un'istanza del delegato. Il gestore dell'evento viene chiamato ogni volta che si verifica l'evento, a meno che non si rimuova il delegato. Per motivi di prestazioni, l'interesse dell'evento predefinito è disattivato, ma viene attivato automaticamente nel codice gestito se si aggiunge un gestore dell'evento.
L'evento NewInAirPackets viene generato anche nella modalità di selezione o cancellazione, non solo quando si inserisce un input penna. È necessario monitorare la modalità di modifica (della cui impostazione è responsabile l'utente) ed essere consapevoli di tale modalità prima di interpretare l'evento. Il vantaggio che ne deriva è una maggiore libertà di innovazione sulla piattaforma grazie a una maggiore consapevolezza degli eventi della piattaforma.
Esempi
In questo esempio C#, viene tracciato un rettangolo nel form con un contorno in grassetto quando i pacchetti aerei si trovano all'interno del rettangolo o con un contorno sottile quando i pacchetti si trovano all'esterno del rettangolo. Viene illustrato come utilizzare gli eventi del pacchetto per controllare i comportamenti dell'applicazione.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Microsoft.Ink;
namespace CSInAirPacketEvents
{
public class Form1 : System.Windows.Forms.Form
{
//...
InkCollector theInkCollector;
int indexX, indexY;
Rectangle rectInterest;
bool thickBorder;
public Form1()
{
//...
//Initialize the InkCollector object.
theInkCollector= new InkCollector(Handle);
theInkCollector.Enabled = true;
//Initialize the target rectangle
rectInterest = new Rectangle(40, 40, 200, 80);
thickBorder = false;
//Save the X and Y data locations within the packet data.
GetXYIndexes(ref indexX, ref indexY);
//Add the event handler for in-air packets
theInkCollector.NewInAirPackets += new InkCollectorNewInAirPacketsEventHandler(NewInAirPackets_Event);
}
//...
private void GetXYIndexes(ref int theXIndex, ref int theYIndex)
{
// Get the indexes of the X and Y data within the raw
// packet data array.
Guid [] theGuids = theInkCollector.DesiredPacketDescription;
for (int i = 0; i < theGuids.Length; i++)
{
if (theGuids[i].Equals(PacketProperty.X))
theXIndex = i;
if (theGuids[i].Equals(PacketProperty.Y))
theYIndex = i;
}
}
private void NewInAirPackets_Event(object sender, InkCollectorNewInAirPacketsEventArgs e)
{
Graphics g = this.CreateGraphics();
Point [] pt = new Point [1];
pt[0].X = e.PacketData[indexX];
pt[0].Y = e.PacketData[indexY];
theInkCollector.Renderer.InkSpaceToPixel(g, ref pt);
// The event may return with data for multiple packets.
// To simplify things, we'll only look at the first.
if (rectInterest.Contains(pt[0].X, pt[0].Y))
{
if (!thickBorder)
{
thickBorder = true;
Refresh();
}
}
else
{
if (thickBorder)
{
thickBorder = false;
Refresh();
}
}
}
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen thePen = new Pen(Color.Black, 2);
if (thickBorder)
thePen.Width = 5;
g.DrawRectangle(thePen, rectInterest);
}
// Event handler for the form's closed event
private void Form1_Closed(object sender, System.EventArgs e)
{
theInkCollector.Dispose();
theInkCollector= null;
}
}
}
In questo esempio Microsoft® Visual Basic® .NET, viene tracciato un rettangolo nel form con un contorno in grassetto quando i pacchetti aerei si trovano all'interno del rettangolo o con un contorno sottile quando i pacchetti si trovano all'esterno del rettangolo. Viene illustrato come utilizzare gli eventi del pacchetto per controllare i comportamenti dell'applicazione.
Imports Microsoft.Ink
Public Class Form1
Inherits System.Windows.Forms.Form
Dim theInkCollector As InkCollector
Dim indexX, indexY As Integer
Dim rectInterest As Rectangle
Dim thickBorder As Boolean
'...
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Initialize the InkCollector object.
theInkCollector = New InkCollector(Handle)
theInkCollector.Enabled = True
'Initialize the target rectangle
rectInterest = New Rectangle(40, 40, 200, 80)
thickBorder = False
'Save the X and Y data locations within the packet data.
GetXYIndexes(indexX, indexY)
'Add the event handler for in air packets
AddHandler theInkCollector.NewInAirPackets, AddressOf NewInAirPackets_Event
End Sub
'...
Private Sub GetXYIndexes(ByRef theXIndex As Integer, _
ByRef theYIndex As Integer)
' Get the indexes of the X and Y data within the raw
' packet data array.
Dim theGuids() As Guid = theInkCollector.DesiredPacketDescription
Dim i As Integer
For i = 0 To theGuids.Length - 1
If theGuids(i).Equals(PacketProperty.X) Then
theXIndex = i
End If
If theGuids(i).Equals(PacketProperty.Y) Then
theYIndex = i
End If
Next
End Sub
Private Sub NewInAirPackets_Event(ByVal sender As Object, _
ByVal e As InkCollectorNewInAirPacketsEventArgs)
'The event may return with data for multiple packets.
'To simplify things, we'll only look at the first.
If rectInterest.Contains( _
e.PacketData(indexX), e.PacketData(indexY)) Then
If thickBorder = False Then
thickBorder = True
Refresh()
End If
Else
If thickBorder = True Then
thickBorder = False
Refresh()
End If
End If
End Sub
Private Sub Form1_Paint(ByVal sender As Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles MyBase.Paint
Dim g As Graphics = e.Graphics
Dim thePen As New Pen(Color.Black, 2)
If thickBorder Then
thePen.Width = 5
End If
g.DrawRectangle(thePen, rectInterest)
End Sub
'Event handler for the form's closed event
Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
theInkCollector.Dispose()
Set theInkCollector = Nothing
End Sub
End Class
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