У меня есть два UIElements
(т. Е. Прямоугольники) в Canvas
и их координаты. Как я могу связать их с дугой в коде?Соедините два UIElement с дугой
0
A
ответ
2
Не нужно получать точный удар по прямоугольникам (или другим объектам): убедитесь, что порядок Z правильный. arc.SetValue(Canvas.ZIndex, -1)
вытолкнет его на задний план. Если вам нужен перпендикулярный удар, вам нужно вырвать алгебру:/
Для дуги: (см. http://msdn.microsoft.com/en-us/library/ms751808.aspx), она должна содержаться в PathFigure.
Редактировать: Это показывает два связанных прямоугольника. Линия проходит между двумя центрами. Дуга начинается в одном центре (начальная точка PathFigure), первый аргумент - это центр второго объекта.
r1 = new Rectangle();
r1.Margin = new Thickness(50, 50, 0, 0);
r1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
r1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
r1.Height = 50;
r1.Width= 50;
r1.Fill = new SolidColorBrush(Colors.Red);
r2 = new Rectangle();
r2.Width = 50;
r2.Height = 50;
r2.Fill = new SolidColorBrush(Colors.Blue);
r2.Margin = new Thickness(350, 450, 0, 0);
r2.VerticalAlignment = System.Windows.VerticalAlignment.Top;
r2.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
l = new Line();
l.X1 = 75;
l.Y1 = 75;
l.X2 = 375;
l.Y2 = 475;
l.Fill = new SolidColorBrush(Colors.Purple);
l.Stroke = new SolidColorBrush(Colors.Purple);
l.StrokeThickness = 2;
l.SetValue(Canvas.ZIndexProperty, -1);
PathGeometry myPathGeometry = new PathGeometry();
// Create a figure.
PathFigure pathFigure1 = new PathFigure();
pathFigure1.StartPoint = new Point(75, 75);
pathFigure1.Segments.Add(
new ArcSegment(
new Point(375, 475),
new Size(50, 50),
45,
true, /* IsLargeArc */
SweepDirection.Clockwise,
true /* IsStroked */));
myPathGeometry.Figures.Add(pathFigure1);
// Display the PathGeometry.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myPathGeometry;
myPath.SetValue(Canvas.ZIndexProperty, -1);
LayoutRoot.Children.Add(r1);
LayoutRoot.Children.Add(r2);
LayoutRoot.Children.Add(l);
LayoutRoot.Children.Add(myPath);
Смежные вопросы
- 1. Соедините два файла с JSON
- 2. Andengine: Соедините два тела
- 3. Соедините два UIScrollView вместе
- 4. Соедините два запроса
- 5. Соедините два узла с краем JavaFX
- 6. Соедините два физических компьютера с Apache Thrift
- 7. Соедините два массива python с помощью индекса
- 8. Соедините два приложения Meteor с использованием DDP
- 9. Соедините два телефона Android с кабелем USB
- 10. Соедините два стола с несоответствующими строками
- 11. Соедините два круга с событием мыши.
- 12. Соедините два наблюдаемых в RX.js
- 13. Положение холста с масштабируемой дугой
- 14. Silverlight Связывание свойств UIElement с свойствами другого UIElement динамически
- 15. Соедините два стола и покажите все комбинации
- 16. Соедините два массива в Visual Basic
- 17. Соедините два массива в агрегации MongoDB?
- 18. Соедините два массива со смежными элементами
- 19. Соедините два списка по указанному столбцу
- 20. Соедините два кортежа в C++ 11
- 21. Соедините два запроса sql в одном
- 22. Соедините два списка разной длины между собой
- 23. Соедините два объекта списка в C#
- 24. Соедините два счета в sql-запросе
- 25. Сеть Петри с дугой сброса
- 26. JS Gauge с растущей дугой
- 27. Как использовать py2exe с дугой?
- 28. Соедините два круга с линией (с элементами DOM)
- 29. Соедините холст с линиями
- 30. Связывание с не-UIElement
Я использую google, и я не нашел ничего полезного. Я попытался создать ArcSegment, но без каких-либо успехов. Было бы замечательно: ArcSegment arc = new ArcSegment (x1, y1, x2, y2); ' – Bip