C# WinRT如何将三角形动态添加到画布

C# WinRT如何将三角形动态添加到画布,c#,geometry,winrt-xaml,C#,Geometry,Winrt Xaml,我想在画布上动态添加一个三角形。我可以做到这一点,但只有一种非常具体的方式不适用于我的应用程序。我想做的是提供一个点和一个大小,然后得到一个三角形 var poly = shape as Polygon; Polygon p = new Polygon { //Width = size, //Height = size, Fill = new SolidColorBru

我想在画布上动态添加一个三角形。我可以做到这一点,但只有一种非常具体的方式不适用于我的应用程序。我想做的是提供一个点和一个大小,然后得到一个三角形

         var poly = shape as Polygon;
         Polygon p = new  Polygon
        {
            //Width = size, 
            //Height = size,
            Fill = new SolidColorBrush(Colors.Red),
            ManipulationMode = ManipulationModes.All,
            RenderTransform = new CompositeTransform()
        };

         int w = 200;
         int h = 200;

        Point start = new Point(400, 200);
        var right = new Point(start.X + w, start.Y);
        var top = new Point(start.X + (w / 2), start.Y - (h));

        poly.Points.Add(point);
        poly.Points.Add(right);
        poly.Points.Add(top);
        poly.Points.Add(point);
然后,我将形状添加到画布子控件,并在形状RenderTransform上设置XY。什么也没有出现。但是,如果我只是这样做:

        Polygon p = new  Polygon
        {
            //Width = size,
            //Height = size,
            Fill = new SolidColorBrush(Colors.Red),
            ManipulationMode = ManipulationModes.All,
            RenderTransform = new CompositeTransform()
        };

         p.Points.Add(new Point(300, 200));
         p.Points.Add(new Point(400, 125));
         p.Points.Add(new Point(400, 275));
         p.Points.Add(new Point(300, 200));
它可以很好地渲染三角形。但是,如果为上述代码提供宽度和高度,它将停止渲染


我是否可以创建一个特定大小的三角形,而不必首先在画布上设置实际点,就像您创建椭圆或矩形一样?

请看前面问题中的示例。它们都是基于MVVM的,并且使用数据绑定,而不是这种不太实用的过程代码方法。我很想知道,通过MVVM,您如何准确地在屏幕上的不同位置放置随机形状(目前为圆形和矩形),而无需使用RenderTransform。我一定喜欢各种各样的形状。但我看不到允许我指定位置的方法!数据项应具有
X
Y
属性。您还可以添加一个
点集合
,并将
DataTemplate
中的
Path.Data
绑定到此集合或其他内容。您实际在集合中放置了什么?我只有在没有那个部分的情况下才能渲染我的形状?如果我的收藏中包含我将要添加的椭圆或形状,我不确定我会将什么元素放在那里?你的收藏不应该包含椭圆或形状。看看我的例子。您需要从UI中提取数据,并使用数据模板在屏幕上表示数据。