Necesito dibujar una imagen píxel por píxel y mostrarla dentro de un WPF. Estoy intentando hacer esto usando un System.Drawing.Bitmap
y luego usando CreateBitmapSourceFromHBitmap()
para crear un BitmapSource
para un control de imagen WPF. Tengo una pérdida de memoria en alguna parte porque cuando se llama repetidamente al CreateBitmapSourceFromBitmap()
, el uso de la memoria aumenta y no baja hasta que finaliza la aplicación. Si no llamo al CreateBitmapSourceFromBitmap()
, no hay cambios notables en el uso de la memoria.WPF CreateBitmapSourceFromHBitmap() pérdida de memoria
for (int i = 0; i < 100; i++)
{
var bmp = new System.Drawing.Bitmap(1000, 1000);
var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
source = null;
bmp.Dispose();
bmp = null;
}
¿Qué puedo hacer para liberar la memoria BitmapSource
?
Eso funciona. Hay un poco de memoria residual después de la prueba, pero el recolector de basura la recoge. Gracias Julien. –
Fantástico. Estaba atrapado entre una biblioteca de terceros y un lugar difícil. Esto lo mordió. –
Aquí hay un enlace al artículo de MSDN Bitmap.GetHBitmap donde @JulienLebosquain está citando de http://msdn.microsoft.com/en-us/library/1dz311e4.aspx – Zack