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

本文关键字:小时 多边形 窗口 WPF 使用 | 更新日期: 2023-09-27 17:55:57

我正在制作一个WPF/C#程序,Polygon来制作一个三角形。当我的窗口大小发生变化时,我希望它被重绘,所以这是我的 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,但结果是一样的。

是错误,还是我做错了什么?

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

使用此 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));         
}