【发布时间】:2018-10-17 06:14:48
【问题描述】:
我正在为一项作业练习 C# 基本 WPF/XAML 绘图,但我一开始就无法弄清楚为什么我的多边形被绘制在错误的位置。
我的窗口是 1280x720 固定的,不可调整大小。我正在尝试通过以下方式以编程方式创建我的多边形:
-
在我想要的坐标中创建点: `
- [0,0]
- [最大高度,0],
- [最大高度,最大宽度],
- [0, 最大宽度],
- [最大高度/2,最大宽度/2]
`
- 创建由三个点、[0,0] 和两条边组成的多边形。我的屏幕应该分成四个三角形。
我尝试将代码分解为非常明确的内容,以查看是否可以找出问题所在,所以这就是我所拥有的:
private void CreatePolygons()
{
List<Point> PointList = new List<Point>
{
new Point(MainUI.Height / 2, MainUI.Width / 2),
new Point(0, 0),
new Point(0, MainUI.Height),
new Point(MainUI.Width, MainUI.Height),
new Point(MainUI.Width, 0)
};
Polygon p1 = new Polygon();
Polygon p2 = new Polygon();
Polygon p3 = new Polygon();
Polygon p4 = new Polygon();
p1.Points.Add(PointList[0]);
p1.Points.Add(PointList[1]);
p1.Points.Add(PointList[2]);
p2.Points.Add(PointList[0]);
p2.Points.Add(PointList[2]);
p2.Points.Add(PointList[3]);
p3.Points.Add(PointList[0]);
p3.Points.Add(PointList[3]);
p3.Points.Add(PointList[4]);
p4.Points.Add(PointList[0]);
p4.Points.Add(PointList[4]);
p4.Points.Add(PointList[1]);
p1.Stroke = System.Windows.Media.Brushes.LightSkyBlue;
p2.Stroke = System.Windows.Media.Brushes.LightSkyBlue;
p3.Stroke = System.Windows.Media.Brushes.LightSkyBlue;
p4.Stroke = System.Windows.Media.Brushes.LightSkyBlue;
p1.StrokeThickness = 1;
p2.StrokeThickness = 1;
p3.StrokeThickness = 1;
p4.StrokeThickness = 1;
MainGrid.Children.Add(p1);
MainGrid.Children.Add(p2);
MainGrid.Children.Add(p3);
MainGrid.Children.Add(p4);
}
最终结果是一个完全错位的网格,我无法理解它最终创建的坐标指的是什么:
我错过了什么?
【问题讨论】: