StrokeIntersection.BeginIndex, propriété
Mise à jour : November 2007
Obtient ou définit le point de début de la structure StrokeIntersection.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
Public Property BeginIndex As Single
'Utilisation
Dim instance As StrokeIntersection
Dim value As Single
value = instance.BeginIndex
instance.BeginIndex = value
public float BeginIndex { get; set; }
public:
property float BeginIndex {
float get ();
void set (float value);
}
/** @property */
public float get_BeginIndex()
/** @property */
public void set_BeginIndex(float value)
public function get BeginIndex () : float
public function set BeginIndex (value : float)
Valeur de propriété
Type : System.Single
Index à virgule flottante où l'intersection commence.
Notes
Si le trait commence dans la zone d'intersection, cette valeur est -1.
L'index à virgule flottante désigne une valeur float qui représente un emplacement situé entre deux points du trait. Par exemple, si 0.0 est le premier point du trait et 1.0 le deuxième, 0.5 est à mi-chemin entre le premier et le deuxième points. De la même façon, une valeur d'index à virgule flottante de 37,25 représente un emplacement qui est situé à 25 % sur la longueur de la ligne entre les points 37 et 38 du trait.
Exemples
Dans cet exemple, tous les segments d'un objet Stroke passé se trouvant à l'intérieur de la structure Rectangle (page pouvant être en anglais) spécifiée sont supprimés. Pour ce faire, les structures StrokeIntersection sont examinées afin de déterminer où fractionner l'objet Stroke passé et les segments à supprimer.
Private Sub DeleteInsideRectangle(ByVal S As Stroke, ByVal R As Rectangle)
' get the StrokeIntersection array
Dim SI() As StrokeIntersection = S.GetRectangleIntersections(R)
' examine each StrokeIntersection
' must work backwards through the array so that when splitting,
' the remaining intersections are still valid for S
For k As Integer = SI.Length - 1 To 0 Step -1
Dim enterRect As Single = SI(k).BeginIndex
Dim exitRect As Single = SI(k).EndIndex
' check if the whole stroke is inside the rectangle
' if so, delete the stroke
If enterRect = -1 And exitRect = -1 Then
S.Ink.DeleteStroke(S)
Continue For
End If
' check if a segment enters and exits the rectangle
' if so, split and delete the segment inside the rectangle
If enterRect > 0 And exitRect > 0 Then
' the stroke resulting from split() is outside, keep it
S.Split(exitRect)
' the stroke from this split() is inside, delete it
Dim temp As Stroke = S.Split(enterRect)
temp.Ink.DeleteStroke(temp)
Continue For
End If
' check if stroke starts inside the rectangle and goes outside
' if so, split and delete the segment inside the rectangle
If enterRect = -1 And exitRect > 0 Then
' the stroke resulting from split() is outside, keep it
S.Split(exitRect)
' delete the remaining segment of the stroke
S.Ink.DeleteStroke(S)
Continue For
End If
' check if stroke starts outside the rectangle and ends inside
' if so, split and delete the segment inside the rectangle
If enterRect > 0 And exitRect = -1 Then
Dim temp2 As Stroke = S.Split(enterRect)
temp2.Ink.DeleteStroke(temp2)
End If
Next
End Sub
private void DeleteInsideRectangle(Stroke S, Rectangle R)
{
// get the StrokeIntersection array
StrokeIntersection[] SI = S.GetRectangleIntersections(R);
// examine each StrokeIntersection
// must work backwards through the array so that when splitting,
// the remaining intersections are still valid for S
for (int k = SI.Length - 1; k >= 0; k--)
{
float enterRect = SI[k].BeginIndex;
float exitRect = SI[k].EndIndex;
// check if the whole stroke is inside the rectangle
// if so, delete the stroke
if (enterRect == -1 && exitRect == -1)
{
S.Ink.DeleteStroke(S);
continue;
}
// check if a segment enters and exits the rectangle
// if so, split and delete the segment inside the rectangle
if (enterRect > 0 && exitRect > 0)
{
// the stroke resulting from split() is outside, keep it
S.Split(exitRect);
// the stroke from this split() is inside, delete it
Stroke temp = S.Split(enterRect);
temp.Ink.DeleteStroke(temp);
continue;
}
// check if stroke starts inside the rectangle and goes outside
// if so, split and delete the segment inside the rectangle
if (enterRect == -1 && exitRect > 0)
{
// the stroke resulting from split() is outside, keep it
S.Split(exitRect);
// delete the remaining segment of the stroke
S.Ink.DeleteStroke(S);
continue;
}
// check if stroke starts outside the rectangle and ends inside
// if so, split and delete the segment inside the rectangle
if (enterRect > 0 && exitRect == -1)
{
Stroke temp2 = S.Split(enterRect);
temp2.Ink.DeleteStroke(temp2);
}
}
}
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