ShapeElement.DoFoldToShape メソッド
コネクタが図形の境界に接する点を計算します。 四角形以外の図形を定義してこれをオーバーライドします。
名前空間: Microsoft.VisualStudio.Modeling.Diagrams
アセンブリ: Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll 内)
構文
'宣言
Public Overridable Function DoFoldToShape ( _
potentialPoint As PointD, _
vectorEndpoint As PointD _
) As PointD
public virtual PointD DoFoldToShape(
PointD potentialPoint,
PointD vectorEndpoint
)
パラメーター
- potentialPoint
型 : Microsoft.VisualStudio.Modeling.Diagrams.PointD
境界ボックスの左上を基準とした、コネクタが境界ボックスを横切る点。
- vectorEndpoint
型 : Microsoft.VisualStudio.Modeling.Diagrams.PointD
コネクタの方向。potentialPoint に対する線上の別のポイント。水平方向のコネクタの場合は Y 座標が常に 0 で、垂直方向のコネクタの場合は X 座標が常に 0 です。他の座標に符号が potentialPoint の図形の中央方向を示す任意の値があります。直線のコネクタの場合、X と Y の比は行の傾斜を示し、値は任意です。
戻り値
型 : Microsoft.VisualStudio.Modeling.Diagrams.PointD
コネクタが終了する点。
解説
このメソッドは、コネクタが終了される図形の境界の点を判断します。 既定では、四角形以外の場合、点は図形の境界ボックスにあります。 ただし、異常なジオメトリを持つ図形のクラスを定義する場合、アイコンは四角形ではなく、たとえばアイコンの図形、およびこの既定の動作は、のシェイプとコネクタの実際の端の間のギャップが保持される場合があります。 コネクタが終了する必要がある独自の図形の端に実際の点が計算するには、このメソッドを無視できます。
例
この例では、作成者は、DSL 定義のアイコンの図形を指定し、図に楕円のアウトラインを持つアイコンを指定します。 既定では、コネクタは、境界ボックスで終了しますが、終端位置が、中でない場合、これは十分に表示されます。 したがって DoFoldToShape は、コネクタが楕円の場所に交差するかを計算する必要があります。 さいわい、円でこのタスクを実行するユーティリティ関数があります: クラスに、の高等 School ジオメトリの本を検索する必要はありません。 これは、楕円の作業に入力を要素として使用することと同じ要素によって出力を分割してユーティリティ関数を調整できます。
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 セキュリティ
- 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。