2

我正在尝试在 Web 应用程序的运行时生成一些 WPF 元素的图像。我取得了一定程度的成功,但是如果我在 WPF 桌面应用程序中使用相同的代码,尽管运行正常,但存在一个问题,即子元素不会伸展以填充其父元素。这是代码:

Canvas imageCanvas = new Canvas { Width = 1651, Height = 2551, Background = Brushes.White };

Canvas Test = new Canvas();

System.Windows.Shapes.Path Path = new System.Windows.Shapes.Path();
Path.Data = Geometry.Parse("M 0,0 H 287 V 287 H 0 Z");
Path.Stretch = Stretch.Fill;
Path.Stroke = Brushes.Black;
Path.StrokeThickness = 1;

Test.Width = 500;
Test.Height = 500;
Test.Children.Add(Path);

imageCanvas.Children.Add(Test);

Canvas.SetTop(Test, 10);
Canvas.SetLeft(Test, 10);

// Update layout
Size size = new Size(imageCanvas.Width, imageCanvas.Height);
imageCanvas.Measure(size);
imageCanvas.Arrange(new Rect(size));

RenderTargetBitmap bitmapRenderer = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
bitmapRenderer.Render(imageCanvas);

我期望看到的是填充它的父画布的正方形,但这不会发生。实际上,父级的大小似乎完全被忽略了,路径始终相同。我能做些什么来强制调整大小吗?我认为最上面的画布上的 measure 和安排调用可以做到这一点,但显然不是。:(

4

1 回答 1

1

这是画布的一个限制,我知道克服这个问题的唯一方法是将你的画布放在“ViewBox”或它的变体中,查看此链接 http://msdn.microsoft.com/en-us/library /system.windows.controls.viewbox.aspx

于 2012-12-24T06:35:25.580 回答