ShapeElement.DoFoldToShape メソッド
コネクタが図形の境界に触れた点が計算されます。四角形以外の図形を定義している場合は、これをオーバーライドします。
名前空間: Microsoft.VisualStudio.Modeling.Diagrams
アセンブリ: Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0 (Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.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 は、コネクタが楕円の場所に交差するかを判定します。しかし、スコープのこのタスクを実行するユーティリティ関数があります : これは、学校の高等ジオメトリの本を検索する必要はありません。これは、楕円の作業に入力を増加させる要因に、同じ要素によって出力を分割してユーティリティ関数を編集してもできます。
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 セキュリティ
- 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。