#c# #wpf
#c# #wpf
Вопрос:
Каково наилучшее решение для получения средней точки ArcSegment в пути и обозначения ее в WPF?
Комментарии:
1. Хороший вопрос. Я бы предположил, что вам нужно вычислить его на основе некоторой комбинации радиуса и средних точек?
2. Если arc каким-то образом привязана к данным viewmodel, вы можете либо добавить свойство с правильным положением метки в viewmodel, либо реализовать конвертер, который делает то же самое. С другой стороны, если вы не используете привязку к данным, вы можете просто вычислить положение метки в том же месте, где вы вычисляете параметры для дуги. Как указал Ритч , вы можете рассчитать положение на основе конечных точек, радиуса и угла…
3. Возможно, блог Чарле Петцольда будет несколько полезен.
Ответ №1:
Это должно сработать:
//the given arc (or any other segments)
var arc = new ArcSegment(
point: new Point(200, 100),
size: new Size(100, 50),
rotationAngle: 90,
isLargeArc: true,
sweepDirection: SweepDirection.Counterclockwise,
isStroked: true);
//compose one or more segments into a collection
var pathcoll = new PathSegmentCollection();
pathcoll.Add(arc);
//create a figure based on the set of segments
var figure = new PathFigure();
figure.Segments = pathcoll;
//compose a collection of figures
var figcoll = new PathFigureCollection();
figcoll.Add(figure);
//create a path-geometry using the figures collection
var geom = new PathGeometry(figcoll);
double fraction = 0.5; //the relative point of the curve
Point pt; //the absolute point of the curve
Point tg; //the tangent point of the curve
geom.GetPointAtFractionLength(
fraction,
out pt,
out tg);
Надеюсь, это поможет.
Приветствия
Комментарии:
1. ‘GetPointAtFractionLength’ . это именно то, что мне было нужно! Спасибо.
2. несколько часов поиска спустя, и вот мы здесь! Спасибо!
3. GetPointAtFractionLength решил для меня так много проблем. Отличная находка!