Поделиться через


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, а для вертикального соединителя координата х всегда равно 0.Другая координата содержит произвольное значение, знак которого указывает направление центра фигуры из точки potentialPoint.Для прямого соединителя отношение x и y дает наклон линии и их значения произвольны.

Возвращаемое значение

Тип: Microsoft.VisualStudio.Modeling.Diagrams.PointD
Точка, в которой должен завершиться соединитель.

Заметки

Этот метод вызывается для определения точки на границе фигуры, в которой соединитель должен быть завершен. По умолчанию для прямоугольной фигуры, точка находится в прямоугольнике фигуры. Но при определении класса фигуры, которая имеет необыкновенный геометрических объектов, например форма Значка, в которой Значок прямоугольн нет, то этот реакции на событие по умолчанию может оставить пустым и фактическим соединителем между краем данной фигуры. Можно переопределить этот метод для расчета фактическую точку на краю данной фигуры, в которой соединитель должна завершиться.

Свертка в фигуру

Примеры

В этом примере, автор определяет форму Значка в определении доменного языка, и предоставляет Значок, в котором рисунке имеет эллиптическую структуру. По умолчанию соединители конца в прямоугольнике, но это имеет неудовлетворительным точки после завершения не посередине стороны. Поэтому должно 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 - пространство имен