Freigeben über


ShapeElement.DoFoldToShape-Methode

Berechnet den Punkt, an dem ein Konnektor den Umfang einer Form betroffen.Überschreiben Sie dies, wenn Sie eine nicht rechteckige Form definieren.

Namespace:  Microsoft.VisualStudio.Modeling.Diagrams
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0.dll)

Syntax

'Declaration
Public Overridable Function DoFoldToShape ( _
    potentialPoint As PointD, _
    vectorEndpoint As PointD _
) As PointD
public virtual PointD DoFoldToShape(
    PointD potentialPoint,
    PointD vectorEndpoint
)

Parameter

  • vectorEndpoint
    Typ: Microsoft.VisualStudio.Modeling.Diagrams.PointD
    Die Richtung des Konnektors.Andere zeigen Sie in der Zeile nach oben relativ zur potentialPoint.Für einen horizontalen Konnektor ist die Y-Koordinate immer 0, und für einen vertikalen Konnektor ist die X-Koordinate immer 0.Die andere Koordinatensystem hat einen beliebigen Wert, dessen Zeichen die Richtung der Mitte der Form von potentialPointangibt.Für eine gerade Verbindung gibt das Verhältnis von X und Y die Tendenz der Zeile, deren Werte sind willkürlich.

Rückgabewert

Typ: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Der Punkt, an dem der Connector beendet werden soll.

Hinweise

Diese Methode wird aufgerufen, um den Punkt auf der Begrenzung einer Form zu bestimmen, an der ein Konnektor beendet werden soll.Standardmäßig für eine rechteckige Form, ist der Punkt im umgebenden Rechteck des Form.Wenn Sie jedoch eine Klasse im definieren, die eine ungewöhnliche Geometrie verfügt, z. B. h. Symbol kann es sich um eine Form, in der das Symbol nicht rechteckig festgelegt ist, wird dieses Standardverhalten besteht, einen Abstand zwischen dem Rand der Form und dem tatsächlichen.Sie können diese Methode überschreiben, um den tatsächlichen Punkt am Rand der Form zu berechnen, bei der der Connector beendet werden soll.

Aufteilen nach Form

Beispiele

In diesem Beispiel verfügt der Autor ein Symbol in Form DSL-Definition und stellt ein Symbol angegeben, in dem das Bild elliptischen Kontur verfügt.Standardmäßig endet Konnektoren im umgebenden Feld. Dieser ähnelt unbefriedigend, wenn die Abbruchstellen nicht mitten in einer Seite befinden.Deshalb sollte DoFoldToShape berechnen, wo der Connector die Ellipse überschreitet.Glücklicherweise gibt es eine Dienstprogrammfunktion, die diese Aufgabe für einen Kreis ausführt: Sie müssen die Highschool Geometrie Horrorgeschichten zu suchen.Sie können die Dienstprogrammfunktion Arbeit für eine Ellipse anpassen, indem wir die Eingaben von einem Faktor multiplizieren und die Ausgabe durch denselben Faktor teilen.

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); 
 }
}

.NET Framework-Sicherheit

Siehe auch

Referenz

ShapeElement Klasse

Microsoft.VisualStudio.Modeling.Diagrams-Namespace