WPF / Path - геометрия, состоящая из нескольких линий с разной шириной линии? - PullRequest
1 голос
/ 04 января 2011

Мне нужно рисовать на одном чертеже с линиями разного цвета, толщины и т. Д.

Я могу создать два экземпляра PathGeometry, но не могу установить для них цвет.

Я могу создать два экземпляра Path, но не могу отобразить их в моем элементе управления.

Что я делаю не так?

Спасибо за любые комментарии!

Андерс, Дания.

Код ниже отображает только "коллекцию" в моем контроле, но я подумал, что это может быть отправной точкой для ответов ...

        var pathFigure1 = new PathFigure(new Point(0, 0),
                                         new List<PathSegment> {new LineSegment(new Point(10, 10), true)}, false);
        var pathFigure2 = new PathFigure(new Point(20, 20),
                                         new List<PathSegment> {new LineSegment(new Point(30, 30), true)}, false);


        var g1 = new PathGeometry(new List<PathFigure> {pathFigure1});
        var g2 = new PathGeometry(new List<PathFigure> {pathFigure2});

        var p1 = new System.Windows.Shapes.Path
                     {
                         Data = g1,
                         Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 0))
                     };
        var p2 = new System.Windows.Shapes.Path
                     {
                         Data = g2,
                         Stroke = new SolidColorBrush(Color.FromRgb(170, 87, 170))
                     };

        var content = new Canvas();
        content.Children.Add(p1);
        content.Children.Add(p2);

        Content = content;

1 Ответ

5 голосов
/ 04 января 2011

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

Ваша проблема на самом последнем этапе, вы устанавливаете свойство содержимого своего элемента управления.Обычно это свойство используется для связывания некоторого объекта данных с элементом управления, затем вы предоставляете шаблон, который является его визуальным представлением.

Что вам нужно сделать, это добавить свои пути как дочерние элементы панели.1006 * Например, добавьте Canvas или Grid к вашему элементу управления.Затем добавьте два ваших пути к сетке / холсту через свойство коллекции Children.

...