У меня есть следующий код:
void Test()
{
currentImage.Source = GetBitmap();
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}
Этот код должен отображать currentImage, который является элементом управления Image в моем xaml, в 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 для рендеринга в памяти?
спасибо!