ShapeElement.DoFoldToShape, méthode
Calcule le point où un connecteur touchera le périmètre d'une forme. Remplacez cette opération si vous définissez une forme non rectangulaire.
Espace de noms : Microsoft.VisualStudio.Modeling.Diagrams
Assembly : Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (dans Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)
Syntaxe
'Déclaration
Public Overridable Function DoFoldToShape ( _
potentialPoint As PointD, _
vectorEndpoint As PointD _
) As PointD
public virtual PointD DoFoldToShape(
PointD potentialPoint,
PointD vectorEndpoint
)
Paramètres
- potentialPoint
Type : Microsoft.VisualStudio.Modeling.Diagrams.PointD
Point au niveau duquel le connecteur coupe le cadre englobant, par rapport à l'angle supérieur gauche du cadre englobant.
- vectorEndpoint
Type : Microsoft.VisualStudio.Modeling.Diagrams.PointD
Sens du connecteur.Un autre point sur la ligne, relatif à potentialPoint.Pour un connecteur horizontal, la coordonnée Y est toujours 0 et pour un connecteur vertical X est toujours 0.L'autre coordonnée a une valeur arbitraire dont le signe indique la direction du centre de la forme à partir du potentialPoint.Pour un connecteur droit, le taux de X et Y donne la courbe de la ligne, et leurs valeurs sont arbitraires.
Valeur de retour
Type : Microsoft.VisualStudio.Modeling.Diagrams.PointD
Point au niveau duquel le connecteur doit se terminer.
Notes
Cette méthode est appelée pour déterminer le point sur la limite d'une forme à laquelle un connecteur doit être arrêté. Par défaut pour une forme rectangulaire, pointez sera du rectangle englobant de la forme. Mais si vous définissez une classe de la forme qui a une géométrie inhabituelle, par exemple une forme icône dans laquelle l'icône n'est pas rectangulaire, ce comportement par défaut peut permettre un écart entre le connecteur et le bord réel de votre forme. Vous pouvez substituer cette méthode pour calculer le point réel au bord de votre forme à laquelle le connecteur doit se terminer.
Exemples
Dans cet exemple, l'auteur avez spécifié une forme d'icône dans la définition DSL, et fournit une icône dans laquelle l'image a un plan elliptique. Par défaut, les connecteurs se terminent à la zone englobante, mais cela a insatisfaisant lorsqu'ils ne sont pas au milieu d'un côté. DoFoldToShape devant donc calculer où le connecteur traversera l'ellipse. Heureusement, il existe une fonction de service qui exécute cette tâche pour un cercle : nous n'avons pas besoin de rechercher nos livres de la géométrie de lycée. Nous pouvons optimiser la fonction de service pour utiliser pour une ellipse en liant des multiplications les entrées par un facteur et de diviser la sortie par le même facteur.
public partial class MyEllipticalIconShape
{
public override PointD DoFoldToShape(PointD potentialPoint, PointD vectorEndpoint)
{
double width = this.Bounds.Width;
double height = this.Bounds.Height;
double k = width / height; // transform from ellipse to circle
// This utility method folds to a circle. But we have an ellipse, so
// we adjust the Y values of the inputs:
PointD result = ShapeGeometry.SnapToCircle(
new PointD(width / 2, width / 2), // center, relative to shape
width / 2, // radius of circle
new PointD(vectorEndpoint.X, vectorEndpoint.Y * k),
new PointD(potentialPoint.X, potentialPoint.Y * k));
// Transform the circular result back to the ellipse:
return new PointD(result.X, result.Y / k);
}
}
Sécurité .NET Framework
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.