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 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。