我正在制作一个带有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
,但结果是一样的。
这是一个错误,还是我做错了什么?
答案 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));
}