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
- potentialPoint
Tipo: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Il punto in cui il connettore incrocia sopra il riquadro delimitatore del testo, rispetto al superiore sinistro del riquadro delimitatore.
- 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.
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
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.