【问题标题】:Polygon not being drawn on Canvas多边形未在画布上绘制
【发布时间】:2014-05-31 18:13:09
【问题描述】:

我正在学习 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
:32,119.425625842204
:96,119.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>

将多边形(十六进制)添加到画布子项后,没有绘制任何内容。

【问题讨论】:

    标签: c# wpf wpf-controls polygon


    【解决方案1】:

    删除 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 是唯一没有固有布局的面板元素 特征。 Canvas 具有 默认的 Height 和 Width 属性 零,除非它是自动调整大小的元素的子元素 它的子元素。 Canvas 的子元素永远不会调整大小,它们 只是定位在他们指定的坐标。这提供了 在固有尺寸限制或 不需要或不需要对齐。对于您想要孩子的情况 要自动调整大小和对齐的内容,通常最好 使用 Grid 元素。

    【讨论】:

    • 我认为 ViewBox 在画布最终大到需要滚动条时是必要的。
    • 好的,这看起来很有希望。我还有另一个问题,我将发布关于动态绘制多边形的位置。这是一个有趣的挑战。
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多