使用

时间:2017-08-14 04:42:49

标签: c# wpf grid shape

我需要一个如下图所示的圆角形状。注意,调整图像大小时,不得调整圆角的大小,只能调整直线段的大小。 img1

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

1 个答案:

答案 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);