Как передать PointCollection, созданный в .cpp, в Polygon в .xaml? - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь нарисовать многоугольник на холсте, используя введенные пользователем значения. Рендеринг в порядке, учитывая значения по умолчанию в .xaml. Моя проблема возникает при попытке установить значение свойства Polygon Points из .cpp. Я супер новичок в UWP и решил, что могу просто установить Points равным PointCollection, но это, похоже, не работает. Любая помощь будет великолепна

Где холст и полигон создаются в .xaml

<Canvas x:Name="tCan" Margin="396,48,88,146">
       <Polygon x:Name="triangle" Stroke="Black"/>
</Canvas>

Передача PointCollection в 'Polygon треугольник' в .cpp

By = 100 + a;
Cy = ((a * a) + (c * c) - (b * b)) / (2 * a);
Cx = sqrt((c * c - (Cy * Cy)));

PointCollection points;
points.Append(Point(100, 100));
points.Append(Point(100, By));
points.Append(Point(Cx, Cy));

triangle->Points = points;

эта последняя строка выбрасывает

"Windows::UI::Xaml::Shapes::Polygon::Points::set" cannot be called with the given argument list  
argument types are: (Windows::UI::Xaml::Media::PointCollection)  
object type is: Windows::UI::Xaml::Shapes::Polygon ^

1 Ответ

0 голосов
/ 24 июня 2019

Ошибка означает, что тип треугольник-> Точки и Точки не соответствуют, поэтому следует преобразовать тип Точки :

By = 100 + a;
Cy = ((a * a) + (c * c) - (b * b)) / (2 * a);
Cx = sqrt((c * c - (Cy * Cy)));

PointCollection^ points = ref new PointCollection();
points->Append(Point(100, 100));​
points->Append(Point(100, By));​
points->Append(Point(Cx, Cy));​

​triangle->Points = points;
...