使用 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
,但结果是一样的。
是错误,还是我做错了什么?
使用此 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));
}