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


ShapeElement.DoFoldToShape - метод

Вычисляет точку, в которой соединитель коснется периметру фигуры.Переопределите это если указать non-прямоугольную форму.

Пространство имен:  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
    Точка, в которой соединитель пересекает on ограничивающий прямоугольник относительно верхнего левого края ограничивающего прямоугольника.
  • vectorEndpoint
    Тип: Microsoft.VisualStudio.Modeling.Diagrams.PointD
    Направление соединителя.Другая точка относительно на линии potentialPoint.Для горизонтального соединителя, координата y всегда будет равно 0, а для вертикального соединителя координата х всегда равно 0.Другая координата содержит произвольное значение символ, указывающий направление центра фигуры из potentialPoint.Для прямого соединительной линии коэффициент x и y, то наклон линии и их значения произвольны.

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

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

Заметки

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

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

Примеры

В этом примере разработчик определил структуру значка в определении DSL, и указывает значок в котором изображение имеет эллиптическую структуру.По умолчанию в ограничивающем прямоугольнике соединители завершается, но это выглядит при точки прерывания не является неудовлетворительным в середине стороны.DoFoldToShape должно поэтому вычисления, где соединитель пересекает эллипс.К счастью, служебную функцию, которая выполняет данную задачу для окружности. нам не нужно найти наши книги геометрии средней school.Можно использовать служебную функцию на рабочий, эллипса, умножения и деления входные данные на выход тем же фактором.

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 - пространство имен