为什么wpf中的形状之间存在间隙
本文关键字:之间 存在 间隙 wpf 为什么 | 更新日期: 2023-09-27 18:29:13
我试图并排绘制一些矩形,但矩形之间可能有一个像素的间隙。在我设置矩形的SnapsToDevicePixels=true或UseLayoutRounding=true之后会更好,但在我调整窗口大小之后,仍然会出现间隙。
这是关于绘制矩形的代码。
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
base.OnRenderSizeChanged(sizeInfo);
DrawRectangle();
}
private void DrawRectangle()
{
var width = this.grid1.ActualWidth;
var height = this.grid1.ActualHeight;
var step = width / 15;
this.grid1.Children.Clear();
for (int i = 0; i < 15; i++)
{
Rectangle rectangle = new Rectangle();
rectangle.Width = step;
rectangle.Height = height;
rectangle.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
rectangle.Margin = new Thickness(i * step, 0, 0, 0);
rectangle.Fill = new SolidColorBrush(Colors.Blue);
rectangle.SnapsToDevicePixels = true;
//rectangle.UseLayoutRounding = true;
this.grid1.Children.Add(rectangle);
}
}
将Rectangle.Stroke
属性设置为相同颜色如何?:
rectangle.Stroke = new SolidColorBrush(Colors.Blue);
rectangle.StrokeThickness = 1.0;
更新>>>
在您现在指定实际上需要多行Rectangle
对象之后,我所能建议的就是使用WrapPanel
而不是Grid
控件。在循环中使用以下代码可以实现无连接线:
Rectangle rectangle = new Rectangle();
rectangle.Width = step;
rectangle.Height = height;
rectangle.Fill = new SolidColorBrush(Colors.Blue);
rectangle.SnapsToDevicePixels = true;
this.grid1.Children.Add(rectangle);