Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未在画布上绘制多边形_C#_Wpf_Wpf Controls_Polygon - Fatal编程技术网

C# 未在画布上绘制多边形

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

我正在学习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
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>