没有在画布上绘制多边形
本文关键字:绘制 多边形 | 更新日期: 2023-09-27 18:05:59
我正在学习WPF,并试图动态地将多边形集合绘制到画布上。
我正在配置多边形如下:
mHexagon = new Polygon();
mHexagon.Width = Diameter * 2;
mHexagon.Height = Diameter * 2;
mHexagon.StrokeThickness = 1;
mHexagon.Stroke = Brushes.AliceBlue;
mHexagon.Points = new PointCollection(Vertices.Select(v => new Point(v.X, v.Y)));
采样点采集:
顶点: 128 64
: 96年,8.57437415779593
: 32岁8.57437415779592
: 0, 64
: 32119 .425625842204
: 96119 .425625842204
我添加多边形如下(封装在Hexagon
类):
PlayerMapWindow.Children.Add(hex.Polygon);
我的XAML看起来像:
<Border BorderThickness="1"
BorderBrush="DarkRed"
Background="Black"
Padding="2">
<Viewbox Name="PlayerMapViewbox"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Canvas Name="PlayerMapWindow"/>
</Viewbox>
</Border>
将多边形(十六进制)添加到画布子元素后,不绘制任何内容
删除 ViewBox
,您的代码可以正常工作。
<Border BorderThickness="1"
BorderBrush="DarkRed"
Background="Black"
Padding="2">
<Canvas Name="PlayerMapWindow"/>
</Border>
Canvas 默认高度和宽度设置为0。如果你想要ViewBox的缩放功能,你必须限制画布的宽度和高度。
<Border BorderThickness="1"
BorderBrush="DarkRed"
Background="Black"
Padding="2">
<Viewbox Name="PlayerMapViewbox"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Canvas Name="PlayerMapWindow" Width="300" Height="300"/>
</Viewbox>
</Border>
从MSDN: Canvas是唯一没有固有布局的面板元素特征。画布具有默认的高度和宽度属性0 ,除非它是自动缩放元素的子元素其子元素。Canvas的子元素永远不会调整大小都在指定的坐标上。这提供了在固有大小限制或对齐不是必需的,也不是想要的。如果你想要孩子的话内容要自动调整大小和对齐,通常最好是使用Grid元素