Tengo el siguiente código:Fuerza prestación de un control de WPF en la memoria
void Test()
{
currentImage.Source = GetBitmap();
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}
Este código se supone que hacen currentImage, que es un control Image en mi xaml a un RenderTargetBitmap.
No funciona, RTB devuelve una imagen en blanco, el problema es currentImage no rindió en sí todavía y lo que se espera este comportamiento, creo ...
Para solucionar este problema, he escrito este código:
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);
}
Básicamente, espero currentImage que pasarán a ser y luego puede que se pusiera en rindió a mi RenderTargetBitmap.
¿Hay alguna manera de hacerlo funcionar sin usar esta solución? ¿Forzar el control de imagen para renderizar en la memoria?
gracias!
Nota: Si tiene un diseño complejo y está mostrando y ocultando elementos con convertidores, puede terminar con un diseño final incorrecto. Esto es lo que tuve que hacer para solucionarlo: http://stackoverflow.com/questions/41966704/wpf-xaml-control-converted-to-an-image-has-incorrect-layout/41966743#41966743 –