InkOverlay.NewInAirPackets, événement
Mise à jour : November 2007
Se produit lorsque l'objet InkOverlay détecte un paquet in-air.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
Public Event NewInAirPackets As InkCollectorNewInAirPacketsEventHandler
'Utilisation
Dim instance As InkOverlay
Dim handler As InkCollectorNewInAirPacketsEventHandler
AddHandler instance.NewInAirPackets, handler
public event InkCollectorNewInAirPacketsEventHandler NewInAirPackets
public:
event InkCollectorNewInAirPacketsEventHandler^ NewInAirPackets {
void add (InkCollectorNewInAirPacketsEventHandler^ value);
void remove (InkCollectorNewInAirPacketsEventHandler^ value);
}
/** @event */
public void add_NewInAirPackets (InkCollectorNewInAirPacketsEventHandler value)
/** @event */
public void remove_NewInAirPackets (InkCollectorNewInAirPacketsEventHandler value)
JScript ne prend pas en charge les événements.
Notes
Cet événement se produit lorsque l'utilisateur déplace le curseur dans la plage de détection physique (proximité) du contexte de la tablette pendant que le curseur se trouve dans la fenêtre de l'objet InkOverlay ou lorsque l'utilisateur déplace la souris dans la fenêtre associée de l'objet InkOverlay.
Les événements NewInAirPackets sont générés rapidement, le gestionnaire d'événements doit donc être rapide pour ne pas dégrader les performances.
Le gestionnaire d'événements reçoit un argument de type InkCollectorNewInAirPacketsEventArgs contenant des données concernant cet événement.
Lorsque vous créez un délégué InkCollectorNewInAirPacketsEventHandler, vous identifiez la méthode qui gère l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour des raisons de performances, l'intérêt d'événement par défaut est désactivé. Toutefois, il est automatiquement activé si vous ajoutez un gestionnaire d'événements.
L'événement NewInAirPackets se déclenche en mode de sélection ou de suppression, pas uniquement lors de l'insertion d'entrée manuscrite. Vous devez surveiller le mode de modification (que vous êtes chargé de définir) et connaître le mode avant d'interpréter l'événement. Ces conditions offrent une plus grande liberté d'innovation sur la plateforme grâce à une sensibilité accrue des événements de plateforme.
Exemples
Cet exemple C# dessine sur le formulaire un rectangle à contour gras lorsque les paquets in-air se trouvent dans le rectangle ou à contour fin lorsque les paquets se trouvent à l'extérieur du rectangle. Il montre comment utiliser les événements de paquet pour contrôler le comportement des applications.
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
{
//...
InkOverlay theInkOverlay;
int indexX, indexY;
Rectangle rectInterest;
bool thickBorder;
public Form1()
{
//...
//Initialize the InkOverlay object.
theInkOverlay= new InkOverlay(Handle);
theInkOverlay.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
theInkOverlay.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 = theInkOverlay.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];
theInkOverlay.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)
{
theInkOverlay.Dispose();
theInkOverlay= null;
}
}
}
Cet exemple Microsoft Visual Basic .NET dessine sur le formulaire un rectangle à contour gras lorsque les paquets in-air se trouvent dans le rectangle ou à contour fin lorsque les paquets se trouvent à l'extérieur du rectangle. Il montre comment utiliser les événements de paquet pour contrôler le comportement des applications.
Imports Microsoft.Ink
Public Class Form1
Inherits System.Windows.Forms.Form
Dim theInkOverlay As InkOverlay
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 InkOverlay object.
theInkOverlay = New InkOverlay(Handle)
theInkOverlay.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 theInkOverlay.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 = theInkOverlay.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
theInkOverlay.Dispose()
Set theInkOverlay = Nothing
End Sub
End Class
Plateformes
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Informations de version
.NET Framework
Pris en charge dans : 3.0