Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
Точки создаются после нажатия мыши по Window. Но как мне их занести в массив и использовать в дальнейшем?
Благодарю!
5 апр 13, 12:24    [14139583]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
автор
myPolygon.Points.Add(endingPoint );


автор
myPolygon.Points.Add(endingPoint);
LayoutRoot.Children.Add(new Polygon() {
Points.Add(endingPoint),
Stroke = System.Windows.Media.Brushes.Black,
Fill = System.Windows.Media.Brushes.LightSeaGreen,
StrokeThickness = 2,
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Center,
});



Но почему, когда я создаю Polygon вот так, то у меня вылазит ошибка в этой строчке:
автор
Points.Add(endingPoint),
5 апр 13, 14:27    [14140567]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
enigmatic
Member

Откуда:
Сообщений: 729
GermanL,

Судя по выбрасываемым этим методом исключениям вы либо передаете в Add null, либо Points только для чтения, либо Points имеет фиксированный размер.
http://msdn.microsoft.com/en-us/library/system.windows.media.pointcollection.add.aspx

Скорее всего вы просто не можете добавлять точки в полигон после его создания.
5 апр 13, 15:03    [14140830]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
А как можно разрешить эту проблему?
5 апр 13, 16:45    [14141560]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
Никто не знает?
7 апр 13, 10:11    [14146666]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
автор
List<Point> Points = new List<Point>();

Вот, дописал это. Но осталась одна ошибка. Неверное объявление инициализатора члена
Кто знает, как с ней бороться?
7 апр 13, 14:59    [14147296]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
Polygon myPolygon = new Polygon();
private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
startingPoint = e.GetPosition(LayoutRoot);
myPolygon.Stroke = System.Windows.Media.Brushes.Black;
myPolygon.Fill = System.Windows.Media.Brushes.LightSeaGreen;
myPolygon.StrokeThickness = 2;
myPolygon.HorizontalAlignment = HorizontalAlignment.Left;
myPolygon.VerticalAlignment = VerticalAlignment.Center;
System.Windows.Point Point1 = new System.Windows.Point(startingPoint.X, startingPoint.Y);
PointCollection myPointCollection = new PointCollection();
myPointCollection.Add(Point1);
myPolygon.Points = myPointCollection;
LayoutRoot.Children.Add(myPolygon);
}
Попробовал вот так, теперь выдает ошибку такую:
"Указанный элемент Visual уже является дочерним по отношению к другому элементу Visual или корневому элементу CompositionTarget".
8 апр 13, 16:51    [14152721]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
автор
private Point points;


Polygon myPolygon = new Polygon();
private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
points = e.GetPosition(LayoutRoot);
Polygon myPolygon = new Polygon();
myPolygon.Stroke = Brushes.Black;
myPolygon.Fill = Brushes.LightSeaGreen;
myPolygon.StrokeThickness = 2;
myPolygon.HorizontalAlignment = HorizontalAlignment.Left;
myPolygon.VerticalAlignment = VerticalAlignment.Center;
System.Windows.Point Point1 = new System.Windows.Point(points.X, points.Y);
System.Windows.Point Point2 = new System.Windows.Point(points.X, points.Y);
PointCollection myPointCollection = new PointCollection();
myPointCollection.Add(Point1);
myPointCollection.Add(Point2);
myPolygon.Points = myPointCollection;
LayoutRoot.Children.Add(myPolygon);
}

Вот, вроде работает. Но как мне теперь эти точки соединить?
9 апр 13, 10:36    [14155088]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
enigmatic
Member

Откуда:
Сообщений: 729
GermanL,

Вы создаете по одному полигону на каждое нажатие, а полигон нужно создавать уже после того как точки расставлены.
9 апр 13, 12:06    [14155806]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
Как создать массив точек, а потом эти точки использовать?

Попробовал при нажатии на Window создать точки, а при нажатии по кнопке, чтоб уже все чертилось, но создается одна точка и все.
Уже запутался. (
9 апр 13, 14:40    [14156771]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
enigmatic
Member

Откуда:
Сообщений: 729
GermanL,

Проблема в том, что вы используете одну точку:
private Point points;

А вам нужен список точек:
private List<Point> points;

Который будет заполняться по мере добавления точек и по которому затем будет отрисован полигон.
Полигон, кстати, у вас тоже на каждое нажатие создается. А должен — по завершению расстановки точек.
10 апр 13, 14:34    [14162069]     Ответить | Цитировать Сообщить модератору
 Re: Как записать массив точек, использую Polygon  [new]
GermanL
Member

Откуда:
Сообщений: 9
Уже пробовал, но не пишет

автор
Неявное преобразование типа "System.Windows.Point" в "System.Collections.Generic.List<System.Windows.Point>"


автор
"System.Collections.Generic.List<System.Windows.Point>" не содержит определения для "X" и не был найден метод расширения "X", принимающий тип "System.Collections.Generic.List<System.Windows.Point>" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
10 апр 13, 15:49    [14162644]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить