Condividi tramite


Metodo ShapeElement.DoFoldToShape

calcola il punto in cui un connettore toccherà il perimetro di una forma.Eseguire l'override di questo metodo se si definisce una forma non rettangolare.

Spazio dei nomi:  Microsoft.VisualStudio.Modeling.Diagrams
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0.dll)

Sintassi

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

Parametri

  • vectorEndpoint
    Tipo: Microsoft.VisualStudio.Modeling.Diagrams.PointD
    La freccia del connettore.Un altro punto della riga, rispetto a potentialPoint.Per un connettore orizzontale, la coordinata Y verrà sempre 0 e per un connettore verticale la coordinata X è sempre 0.L'altra coordinata dispone di un valore arbitrario di cui il simbolo indica la direzione del centro della forma da potentialPoint.Per un connettore diritto, il rapporto X e Y fornisce l'inclinazione della linea e i relativi valori sono arbitrari.

Valore restituito

Tipo: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Il punto in cui il connettore deve terminare.

Note

Questo metodo viene chiamato per determinare il punto del limite di una forma di un connettore deve essere terminato.Per impostazione predefinita per una forma rettangolare, il punto si riferisce al riquadro delimitatore del testo della forma.Ma se si definisce una classe di forma con la geometria insolita, ad esempio una forma dell'icona in cui l'icona non rettangolare, il comportamento predefinito può consentire un gap tra il connettore e l'effettivo bordo della forma.È possibile eseguire l'override di questo metodo per calcolare l'effettivo punto sull'orlo della forma a cui il connettore deve terminare.

Piegatura forma

Esempi

In questo esempio, l'autore ha specificato una forma icona nella definizione di modello DSL e vengono forniti un'icona in cui l'immagine una struttura ellittica.Per impostazione predefinita, i connettori terminano nel riquadro delimitatore del testo, ma questo sembra insoddisfacente quando i punti terminali non sono in corso un lato.DoFoldToShape deve quindi calcolare in cui il connettore incrocerà l'ellisse.Fortunatamente, è una funzione pratica che esegue questa attività per un cerchio: non è necessario trovare avrà libri della geometria di elevata School.È possibile adattarci la funzione utile per lavorare per un'ellisse moltiplicando gli input per un fattore e divisione l'output dallo stesso fattore.

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

Sicurezza di .NET Framework

Vedere anche

Riferimenti

ShapeElement Classe

Spazio dei nomi Microsoft.VisualStudio.Modeling.Diagrams