使用代码隐藏在 wpf 中创建圆角形状

Create a round corner shape in wpf using code behind

我需要一个像下面这样的圆角形状image.note,当调整图像大小时,圆角不能调整大小,只有直线段必须调整大小。

我想我可以创建一个 3 列和 3 行的网格,并将形状的每个部分放在每个单元格中,如下图所示 任何人都可以提供相关代码来执行此操作(特别是在网格单元格中创建圆形部分)或提供其他解决方案(如果有)。 请注意,我已经在代码中创建了网格,问题是如何在其中一个网格单元格中创建四分之一圆形部分(例如第 0 行第 0 列单元格中的圆形部分!)?

这是一个如何以编程方式创建 Grid 的简单示例。顺便说一句:SO 不是为了要求代码,将来你应该首先使用搜索来找到类似的问题,尝试使它们适应你的问题并在这些步骤之后提出问题(显示你尝试过的)仍然有问题.

XAML:

<Grid x:Name="root"></Grid>

代码隐藏:

Grid g = new Grid();
ColumnDefinition cd1 = new ColumnDefinition();
ColumnDefinition cd2 = new ColumnDefinition();
ColumnDefinition cd3 = new ColumnDefinition();
cd1.Width = new GridLength(15, GridUnitType.Pixel);
cd2.Width = new GridLength(200, GridUnitType.Pixel);
cd3.Width = new GridLength(15, GridUnitType.Pixel);
g.ColumnDefinitions.Add(cd1);
g.ColumnDefinitions.Add(cd2);
g.ColumnDefinitions.Add(cd3);

RowDefinition rd1 = new RowDefinition();
RowDefinition rd2 = new RowDefinition();
RowDefinition rd3 = new RowDefinition();
rd1.Height = new GridLength(15, GridUnitType.Pixel);
rd2.Height = new GridLength(100, GridUnitType.Pixel);
rd3.Height = new GridLength(15, GridUnitType.Pixel);
g.RowDefinitions.Add(rd1);
g.RowDefinitions.Add(rd2);
g.RowDefinitions.Add(rd3);

Border border = new Border();
border.BorderThickness = new Thickness(2, 2, 2, 2);
border.BorderBrush = Brushes.Red;
border.CornerRadius = new CornerRadius(15, 15, 15, 15);
Grid.SetColumn(border, 0);
Grid.SetRow(border, 0);
Grid.SetColumnSpan(border, 3);
Grid.SetRowSpan(border, 3);

Grid contentGrid = new Grid();
contentGrid.Background = Brushes.Yellow;
Grid.SetColumn(contentGrid, 1);
Grid.SetRow(contentGrid, 1);

g.Children.Add(border);
g.Children.Add(contentGrid);
root.Children.Add(g);