【发布时间】:2009-07-03 18:15:48
【问题描述】:
我有以下代码:
void Test()
{
currentImage.Source = GetBitmap();
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}
此代码应该将 currentImage(我的 xaml 中的 Image 控件)渲染到 RenderTargetBitmap。
它不起作用,rtb 返回一个空白图像,问题是 currentImage 还没有呈现自己,所以这种行为是预期的,我认为......
为了解决这个问题,我写了这段代码:
void Test()
{
currentImage.Source = GetBitmap();
this.Dispatcher.BeginInvoke((Action)delegate()
{
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}, System.Windows.Threading.DispatcherPriority.Render, null);
}
基本上,我等待 currentImage 被渲染,然后我可以将它正确渲染到我的 RenderTargetBitmap。
有什么方法可以在不使用此解决方法的情况下使其正常工作?可能强制 Image 控件在内存中呈现?
谢谢!
【问题讨论】:
-
注意:如果您有一个复杂的布局并且您使用转换器显示和隐藏元素,您最终可能会得到一个不正确的最终布局。这是我必须解决的问题:stackoverflow.com/questions/41966704/…
标签: wpf wpf-controls