ShapeElement.DoFoldToShape – metoda
Vypočte souřadnice bodu, kde spojnice budou dotýkat obvodu tvaru.Potlačit pokud definujete obdélníkový tvar.
Obor názvů: Microsoft.VisualStudio.Modeling.Diagrams
Sestavení: Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (v Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)
Syntaxe
'Deklarace
Public Overridable Function DoFoldToShape ( _
potentialPoint As PointD, _
vectorEndpoint As PointD _
) As PointD
public virtual PointD DoFoldToShape(
PointD potentialPoint,
PointD vectorEndpoint
)
Parametry
- potentialPoint
Typ: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Bodu, kde protíná konektoru táhlo ohraničovacího rámečku vzhledem k horní levé části ohraničovacího rámečku.
- vectorEndpoint
Typ: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Směr spojnice.Jiný bod v řádku vzhledem k potentialPoint.Pro vodorovná spojnice souřadnici Y bude vždy 0 a svislou spojnici X souřadnice je vždy 0.Má jiné souřadnice libovolného hodnotu jejíž znaménko označuje směr do středu obrazce z potentialPoint.Přímá spojnice, poměr X a Y vám sklon řádku a jejich hodnoty jsou libovolné.
Vrácená hodnota
Typ: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Místo, kde by měla ukončit konektoru.
Poznámky
Tato metoda je volána k určení bodu na hranici, kdy by mělo být ukončeno spojnice obrazce.Ve výchozím nastavení obdélníkového tvaru bude bod na ohraničovacím rámečku obrazce.Ale pokud definujete třídu tvaru, který má neobvyklý geometrie, například ikonu obrazce ve kterém panel není pravoúhlý, pak toto výchozí chování může ponechat mezeru mezi konektoru a skutečné okraje tvaru.Můžete přepsat tuto metodu pro výpočet skutečné místo na okraj tvaru, kdy by měla ukončit konektoru.
Příklady
V tomto příkladu autor má tvar ikonu podle definice DSL a dodává ikona, ve kterém má obrázek eliptického osnovy.Ve výchozím nastavení konektory ukončit na ohraničovací rámeček, ale to vypadá nevyhovující koncovými body nejsou uprostřed stranu.DoFoldToShape proto musí vypočítat, které protínají konektoru elipsy.Naštěstí je nástroj funkce, která provádí tento úkol pro kruh: potřebujeme není k nalezení knihách středoškolské geometrie.Můžeme se může přizpůsobit funkce nástroje pro elipsu vynásobením koeficientem vstupů a výstupu vydělí stejný faktor.
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);
}
}
Zabezpečení rozhraní .NET Framework
- Plná důvěra přímému volajícímu. Částečně zabezpečený kód nemůže tento člen použít. Další informace naleznete v tématu Používání knihoven z částečně důvěryhodného kódu.