将“用户控件”渲染到图像文件

时间:2011-10-29 10:39:05

标签: c# silverlight windows-phone-7 live-tile

我按照here解释的方法为我的应用程序生成自定义的实时图块外观。

这种方法唯一的问题是你需要通过c#代码以编程方式构建整个控件集。

我尝试将一个用户控件添加到我的应用程序(LiveTile.xaml),并且此时使用相同的方法,而不是添加所有的Rectangle和TextBlocks,我实例化了UserControl并将其渲染到位图上。

var tileUserControl = new MyLiveTile(); // this internally has a simple 50x50 red grid
bitmap.Render(tileUserControl, new TranslateTransform());

但是:我不再看到任何渲染到位图图像的内容。图像完全是黑色的(即使用户控件内部的xaml非常简单)。

有谁知道如何实现这一目标?

我也尝试了什么

  • 调用.UpdateLayout()
  • 调用.Measure();
  • 调用.Arrange();
  • 调用.InvalidateMeasure();
  • 调用.InvalidateArrange();

似乎都没有对输出产生影响。

感谢。

2 个答案:

答案 0 :(得分:2)

介意发布整个渲染例程?您至少需要致电bitmap.Invalidate()

此外,您可能需要等待Control.Loaded事件,以确保UserControl上的所有FrameworkElements都已实际加载和呈现。

将UserControl渲染到早期,只会渲染UserControl元素本身,而不会有任何子元素(即黑色方块)

答案 1 :(得分:0)

我也有这个问题。如果您使用Backgroud代理更新实时磁贴,我不确定控件是否会加载或能够对其内容进行消息传递或排列或渲染它们。

我会尝试等到Load事件被触发并尝试再次渲染控件。