C# 未在画布上绘制多边形
我正在学习WPF,并尝试在画布上动态绘制多边形集合 我正在按如下方式配置多边形:C# 未在画布上绘制多边形,c#,wpf,wpf-controls,polygon,C#,Wpf,Wpf Controls,Polygon,我正在学习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
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
class中):
我的XAML看起来像:
<Border BorderThickness="1"
BorderBrush="DarkRed"
Background="Black"
Padding="2">
<Viewbox Name="PlayerMapViewbox"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Canvas Name="PlayerMapWindow"/>
</Viewbox>
</Border>
将多边形(十六进制)添加到画布子对象后,将不绘制任何内容。删除
视图框
,代码将正常工作
<Border BorderThickness="1"
BorderBrush="DarkRed"
Background="Black"
Padding="2">
<Canvas Name="PlayerMapWindow"/>
</Border>
画布的默认高度和宽度设置为0。如果您想要查看框的缩放功能,必须约束画布的宽度和高度
<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>
发件人:
画布是唯一没有固有布局的面板元素
特点。画布具有默认的高度和宽度属性
零,除非它是自动调整大小的元素的子元素
它的子元素。画布的子元素永远不会调整大小,而是
只是定位在指定的坐标上。这就提供了
适用于固有尺寸限制或
不需要或不需要对齐。适用于您想要孩子的情况
要自动调整内容大小和对齐,通常最好
使用网格元素
我认为当画布大到需要滚动条时,
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>