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.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.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
    Direzione del connettore.Un altro punto della linea, relativo a potentialPoint.Per un connettore orizzontale, la coordinata Y è sempre uguale a 0 e per un connettore verticale la coordinata X è sempre 0.Per l'altra coordinata è presente un valore arbitrario il cui simbolo indica la direzione del centro della forma da potentialPoint.Per un connettore diritto, il rapporto di X e Y fornisce l'inclinazione della linea e i relativi valori sono arbitrari.

Valore restituito

Tipo: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Punto in cui connettore deve terminare.

Note

Questo metodo viene chiamato per determinare il punto sul limite di una forma di un connettore deve essere terminato. Per impostazione predefinita per una forma rettangolare, il punto sarà nel riquadro delimitatore del testo della forma. Ma se si definisce una classe di forma con la geometria insolita, ad esempio una forma l'icona in cui l'icona non rettangolare, il comportamento predefinito potrebbe consentire a un gap tra il connettore e il 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 dell'icona nella definizione di modello DSL e vengono forniti un'icona in cui l'immagine ha una struttura ellittica. Per impostazione predefinita, i connettori terminano nel riquadro delimitatore del testo, ma questo sembra insoddisfacente quando i punti finali non sono in corso un lato. DoFoldToShape deve quindi calcolare in cui il connettore incrocerà l'ellisse. Fortunatamente, è pratica funzione che esegue questa attività per un cerchio: non è necessario trovare i libri sulla geometria della High School. È possibile adattarci la funzione utile per lavorare per un'ellisse moltiplicando gli input per un fattore e dividendo 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