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 應該計算連接器會跨界到橢圓形的地方。 所幸,有執行圓形的這個工作的一種公用程式函式:我們不需要找出我們的高中幾何書。 我們可以調整這個公用程式函式橢圓形的工作藉由乘以輸入以因數和除以輸出由同一個因素。
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 安全性
- 完全信任立即呼叫者。這個成員無法供部分信任的程式碼使用。如需詳細資訊,請參閱從部分受信任程式碼使用程式庫。