Partager via


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

  • 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.

Revenir à la forme

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

Voir aussi

Référence

ShapeElement Classe

Microsoft.VisualStudio.Modeling.Diagrams, espace de noms