Если вы используете RenderTargetBitmap со вновь созданными элементами, вам нужно обязательно вызывать Measure and Arrange.
private Image CreateBitmapImage(DrawingImage drawingImage)
{
var image = new Image();
image.Source = drawingImage;
var bitmap = new RenderTargetBitmap(300, 300, 96, 96, PixelFormats.Pbgra32);
var size = new Size(bitmap.PixelWidth,bitmap.PixelHeight);
image.Measure(size);
image.Arrange(new Rect(size));
bitmap.Render(image);
image.Source = bitmap;
return image;
}
Возможно, вы захотите передать размер в качестве параметра, и может быть лучше вернуть RenderTargetBitmap вместо элемента Image, чтобы вы могли использовать его в нескольких местах.
В WPF есть некоторые функции, которые вы, возможно, захотите изучить, такие как Freezables , BitmapCache и CachingHint для TileBrushes, однако RenderTargetBitmap все еще является хорошим выбором, так как предсказуемо.