我该如何在 C# WPF 项目中绘制多边形?

6

请点击图像中的区域,我想要制作多边形。

myPolygon = new Polygon();
myPolygon.Stroke = Brushes.Black; 
myPolygon.Fill = Brushes.LightYellow; 
myPolygon.StrokeThickness = 2; 
myPolygon.HorizontalAlignment = HorizontalAlignment.Left; 
myPolygon.VerticalAlignment = VerticalAlignment.Center; 
myPolygon.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(Polygon_MouseDown); 
myPolygon.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(Polygon_MouseUp);     

private void Polygon_MouseDown(object sender, MouseButtonEventArgs e) 
{     
    Point p = e.GetPosition(image); 
    myPolygon.Points = new PointCollection() { new Point(p.X,p.Y) };
    RootCanvas.Children.Add(myPolygon); 
} //MouseClick Event BUT, did not click behavior.. I want draw a line along the points.

我该如何做才能......?


7
要求编码的问题必须展示对所解决问题的最基本理解。请包含尝试过的解决方案、为何不起作用以及期望的结果。请注意,翻译后的内容应保持与原文意思相同,且更通俗易懂。 - Soner Gönül
使用Blend,它有工具... - trinaldi
1个回答

12
我们可以使用WPF画布绘制多边形,该画布是一组子对象。
Polygon p = new Polygon();
p.Stroke = Brushes.Black;
p.Fill = Brushes.LightBlue;
p.StrokeThickness = 1;
p.HorizontalAlignment = HorizontalAlignment.Left;
p.VerticalAlignment = VerticalAlignment.Center;
p.Points = new PointCollection() { new Point(10, 10), new Point(100, 100), new Point(200, 200) };
freeCanvas.Children.Add(p);

有关更多信息,请参阅以下 URL:

http://www.codeproject.com/Articles/128705/WPF-rounded-corners-polygon

http://classicalprogrammer.wikidot.com/draw-dynamic-polygons-in-wpf

http://msdn.microsoft.com/en-us/library/ms747393.aspx


抱歉,我丢失了我的源代码... myPolygon = new Polygon(); myPolygon.Stroke = Brushes.Black; myPolygon.Fill = Brushes.LightYellow; myPolygon.StrokeThickness = 2; myPolygon.HorizontalAlignment = HorizontalAlignment.Left; myPolygon.VerticalAlignment = VerticalAlignment.Center; myPolygon.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(Polygon_MouseDown); myPolygon.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(Polygon_MouseUp); //初始化 - user2853714
private void Polygon_MouseDown(object sender, MouseButtonEventArgs e) { Point p = e.GetPosition(image); myPolygon.Points = new PointCollection() { new Point(p.X,p.Y)}; RootCanvas.Children.Add(myPolygon); } //鼠标单击事件但是,没有点击行为... 我想沿着这些点画一条直线。 - user2853714

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接