2013-06-23 3 views
1

У меня есть 2 набора параллельных и когда их углы различаются, я заканчиваю пересечением на одном конце и открытым промежутком на другом. Я позаботился о interesection, установив endPoint строки1 так же, как начальная точка для строки2. Как и ...C# - изогнутая линия между двумя точками

enter image description here

Это код, который я до сих пор для добавления строк ....

for (int i: 0; i < myLines.size() ; i++) { 
    Line myLine = checkforInterection(myLines, i); 
    myCanvas.Children.Add(myLine); 
    myCanvas.Children.Add(createParallel(myLine)); 
} 

Я хотел бы, чтобы закрыть брешь на правой стороне при наличии a кривая линия, которая может охватывать расстояние. Каков наилучший способ обойти это?

ответ

4

Используйте BezierSegment для получения плавной кривой. Начальная и конечная точки должны быть начальной и конечной точками прямой линии. Контрольная точка может потребовать некоторых экспериментов, чтобы они выглядели так, как вы этого хотели, поскольку это скорее предпочтение, но настройка контрольной точки на проецируемое пересечение двух линий, к которым привязана кривая, станет хорошей отправной точкой. Если вы хотите настроить его после этого, вы должны переместить его вдоль линии от проецируемого пересечения до фактического пересечения двух линий слева.

Для ясности:

Reference picture

Начните с начальными и конечными точками на зеленых точках. Начните с контрольной точки на пересечении красной линии, и, если вы хотите ее отрегулировать, переместите ее вдоль синей линии, чтобы сохранить симметричную кривую.

Примечание: использование пересечения красных линий даст вам совершенно гладкий переход; других пунктов не будет.

+0

+1, хотя некоторые XAML сделают это лучше. –