共用方式為


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
)

參數

  • 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 安全性

請參閱

參考

ShapeElement 類別

Microsoft.VisualStudio.Modeling.Diagrams 命名空間