ShapeElement.DoFoldToShape, méthode
Calcule le point où un connecteur horodatera le périmètre d'une forme.Substituez cette opération si vous définissez une forme non rectangulaire.
Espace de noms : Microsoft.VisualStudio.Modeling.Diagrams
Assembly : Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0 (dans Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.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
Le point où le connecteur traverse sur la zone englobante, par rapport à le bord supérieur gauche de la zone englobante.
- vectorEndpoint
Type : Microsoft.VisualStudio.Modeling.Diagrams.PointD
La direction du connecteur.Un autre point sur la ligne, relatif à potentialPoint.Pour un connecteur horizontal, le coordonnée Y sera 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 d'potentialPoint.Pour un connecteur droit, le taux de X et O donne la courbe de la ligne, et leurs valeurs sont arbitraires.
Valeur de retour
Type : Microsoft.VisualStudio.Modeling.Diagrams.PointD
Le point où 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 terminé.Par défaut pour une forme rectangulaire, le point se trouve sur la zone englobante de la forme.Mais si vous définissez une classe de la forme qui a une géométrie inhabituelle, par exemple une forme d'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 a spécifié une forme d'icône dans la définition DÉSOLÉ, et fournit une icône dans lequel l'image a un plan elliptique.Par défaut, les connecteurs se terminent à la zone englobante, mais cela a insatisfaisant lorsque les points d'arrêt ne sont pas au milieu d'un côté.DoFoldToShape par conséquent doit 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 carnets de la géométrie de lycée.Nous pouvons adapter la fonction de service pour fonctionner pendant une ellipse en écoutant de multiplier 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.