2017-09-01 82 views
0

我有一个画布myCanvas,我想在指定点的位置绘制多个多边形。在画布中绘制多个多边形

PointCollection polygonpoints = new PointCollection(); 

private void myCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    //add polygon collection 
    Point p = e.GetPosition(MapGrid); 
    polygonpoints.Add(p); 
} 

private void myCanvas_MouseRightButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    Polygon poly = new Polygon(); 
    poly.Points = polygonpoints; 
    poly.Fill = Brushes.AliceBlue; 
    MapCanvas.Children.Add(poly); 
    polygonpoints.Clear(); // this is making clear the polygon but the pointcollection is remain 
} 

polygonpoints.Clear - 我计划使用它来清除下一个多边形的多边形点。但这没有发生。

请提出任何建议。

+0

什么没有发生什么呢? – orhtej2

+0

下一步当然是在左键单击时显示当前的Polygon。您将首先创建一个新的Polygon并将其添加到Canvas。保留对当前Polygon的引用作为类成员(而不是PointCollection)。在每次左键单击时在其Points项目中添加一个点。点击右键,创建并添加一个新的多边形并对其进行操作。 – Clemens

回答

0

我相信问题是你通过polygonpoints而不是它的副本poly.Points

更改多边形创建到

Polygon poly = new Polygon 
{ 
    Points = new PointCollection(polygonpoints), 
    Fill = Brushes.AliceBlue 
}; 
+1

请注意,'PointCollection'也是'ICollection ',所以不需要改变该声明(除非你解释了任何可能的优点)。 – Clemens

+0

多数民众赞成它..谢谢! – srinivas