Рисование линий в Windows Phone 7? - PullRequest
2 голосов
/ 13 октября 2011

Я хотел бы нарисовать некоторые линии, используя Path. Это всегда показывает мне ошибку при запуске программы. Ошибка возникает в этом предложении: "myPathSegmentCollection.Add (myLineSegment [i]);" Решение может быть построено. Во время отладки отображается сообщение «Элемент уже является дочерним элементом другого элемента»

моя функция следующая:

public void drawline(Point endP)
{
    PathFigenter code hereure myPathFigure = new PathFigure();
    myPathFigure.StartPoint = endP;

    LineSegment [] myLineSegment = new LineSegment[5];
    Point myPoint = new Point();
    LineSegment line = new LineSegment();
    PathSegmentCollection myPathSegmentCollection = new PathSegmentCollection();
    for (int i = 0; i < 5; i++)
    {
        myPoint.X = i + 10.0;
        myPoint.Y = i+1.0;
        line.Point = myPoint;
        myLineSegment[i] = line;
        myPathSegmentCollection.Add(myLineSegment[i]);
    } 

    myPathFigure.Segments = myPathSegmentCollection;

    PathFigureCollection myPathFigureCollection = new PathFigureCollection();
    myPathFigureCollection.Add(myPathFigure);

    PathGeometry myPathGeometry = new PathGeometry();
    myPathGeometry.Figures = myPathFigureCollection;

    myPath.StrokeThickness = 1;
    myPath.Data = myPathGeometry;
}

Кто-нибудь может помочь? THX!

1 Ответ

1 голос
/ 13 октября 2011

Проблема в том, что вы повторно используете LineSegment в цикле.Их можно привязать только к одному элементу управления, поэтому попытка добавить один и тот же элемент несколько раз вызывает исключение.

Чтобы исправить это, создайте новый LineSegment в цикле:

for (int i = 0; i < 5; i++)
{
    myLineSegment[i] = new LineSegment() {
       Point = new Point(i + 10.0, i + 1.0);
    };
    myPathSegmentCollection.Add(myLineSegment[i]);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...