我需要使用一些隐藏列创建Grid的快照(通过设置它的ColumnDefinition.Width = 0)。
在屏幕上看起来不错,但created image
所有列都可见(does not respect the ColumnDefinitions)
。因为RenderTargetBitmap正在查看不存在这些更改的不同图层(可视图层与布局图层),因此我在某处更红。 有没有机会用正确的ColumnDefinitions获得网格的真实快照?我不能简单地使用Rectagnel.Fill = VisualBrush,因为我需要在循环中存储这些图像(每次迭代=新图像)。 / p>
我试过像this snippet
这样的方法答案 0 :(得分:1)
需要在每个快照之前强制UpdateLayout()
。我在周期中更改了尺寸,布局更新得太晚了。
答案 1 :(得分:1)
在创建UIElement
的快照:
public static UIElement GetMeasuredAndArrangedVisual(UIElement visual)
{
visual.Measure(new Size
{
Height = double.PositiveInfinity,
Width = double.PositiveInfinity
});
visual.Arrange(new Rect(0, 0, visual.DesiredSize.Width, visual.DesiredSize.Height));
visual.UpdateLayout();
return visual;
}