Freigeben über


ShapeElement.DoFoldToShape-Methode

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

Namespace:  Microsoft.VisualStudio.Modeling.Diagrams
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.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.Ein weiterer Zeiger auf die Zeile, relativ zum 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 Koordinate hat einen beliebigen Wert, dessen Vorzeichen die Richtung der Formmitte vom potentialPoint aus angibt.Für einen geraden Konnektor gibt das Verhältnis von X und Y die Tendenz der Zeile an, und 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 der Grenze einer Form zu bestimmen, an der ein Konnektor beendet werden soll. Standardmäßig für eine rechteckige Form, liegt der Punkt im umgebenden Feld der Form. Aber, wenn Sie eine Klasse definieren Form, die eine ungewöhnliche Geometrie verfügt, z Beispiel ließe möglicherweise eine Symbolform, in der das Symbol nicht rechteckig ist, kann das Standardverhalten eine Lücke zwischen dem Konnektor und dem tatsächlichen Rand der Form. Sie können diese Methode überschreiben, um den tatsächlichen Punkt am Rand der Form zu berechnen, an der der Konnektor beendet werden sollte.

Aufteilen nach Form

Beispiele

In diesem Beispiel verfügt der Autor einer Symbolform in DSL-Definition angegeben und ein Symbol enthält, in dem das Bild elliptischen Kontur verfügt. Standardmäßig Beenden Konnektoren am Begrenzungsrahmen, aber dieser sieht unbefriedigend, wenn die Abbruchstellen nicht mitten in einer Seite befinden. DoFoldToShape sollte daher werden, wo der Konnektor die Ellipse überschreitet. Glücklicherweise ist eine Hilfsfunktion, die diese Aufgabe für einen Kreis ausführt: wir, müssen nicht die Highschool Geometriebücher zu suchen. Wir können die Hilfsfunktion für Arbeit eine Ellipse anpassen, indem wir die Eingaben mit einem Faktor multiplizieren und die Ausgabe über denselben Faktor aufteilen.

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