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
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Microsoft.VisualStudio.Modeling.Diagrams - пространство имен