使用WPF 4更改窗口大小时重绘多边形

时间:2013-01-25 18:39:02

标签: c# .net wpf polygon

我正在制作一个带有Polygon的WPF / C#程序来制作一个三角形。当我的窗口大小发生变化时,我希望它重绘,所以这是我的WPF:

<Polygon  Name="Plg" Grid.Row="1" Grid.Column="1" Stroke="Red" StrokeThickness="1">
    <Polygon.Fill>
        <SolidColorBrush Color="White" />
    </Polygon.Fill>
</Polygon>

以下是Window_SizeChanged事件中的代码:

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{        
    Plg.Points.Clear(); 
    Plg.Points.Add(new Point(Plg.ActualWidth / 2 , 0));
    Plg.Points.Add(new Point(2, Plg.ActualHeight));
    Plg.Points.Add(new Point(Plg.ActualWidth, Plg.ActualHeight));         
}

如果我增加窗口的大小,它运行良好,但如果我尝试减少它,三角形保持最大的尺寸。我也尝试使用RenderSize,但结果是一样的。

这是一个错误,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用此XAML,它可以工作:(网格在窗口中)

<Grid Name="myGrid">
    <Polygon  Name="Plg" Grid.Row="1" Grid.Column="1" Stroke="Red" StrokeThickness="1">
        <Polygon.Fill>
            <SolidColorBrush Color="Black" />
        </Polygon.Fill>
    </Polygon>
</Grid>

更改您的代码:

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{        
    Plg.Points.Clear(); 
    Plg.Points.Add(new Point(myGrid.ActualWidth / 2 , 0));
    Plg.Points.Add(new Point(2, myGrid.ActualHeight));
    Plg.Points.Add(new Point(myGrid.ActualWidth, this.ActualHeight));         
}