![]() |
Liberar memoria del HDC
Hola a todos.
En un código que me facilitó delphi.com.ar -------------------------------------------------------------------------------- var hBmp : HBITMAP; Bmp : TBitmap; begin ... hBmp := CreateDIBitmap( GetWindowDC(GetDesktopWindow()), ... ); Bmp := TBitmap.Create; Try Bmp.Handle := hBmp; Bmp.SaveToFile( 'c:\...' ); finally Bmp.Free; end; -------------------------------------------------------------------------------- me encontré que en cada iteración del bucle se consumían 4 Kb de memoria. La primera solución que me vino fué utilizar la función CreateDC: ---------------------------------------------------------------------- var MiDC : HDC ....... MiDC:=CreateDC('display',0,0,0) hBmp := CreateDIBitmap( MiDC, ... ); DeleteDC(MiDC) ----------------------------------------------------------------------- Espero que si alguien se encuentra con ese problema pueda encontrar la solución aquí. Un Saludo |
Cuando no necesites mas del Bitmap, tenés que hacer un DeleteObject....
Código:
var |
Cierto. Eso es lo que me indicaste.
Voy a probar lo que me dices ahora mismo. A ver si me funciona con el resto de mi código... seguro que sí! Por cierto. Podrías orientarme cómo hacer para conseguir que ese bitmap sea independiente del DC. Me encuentro que al generarlo desde un terminal server (como la pantalla es de 256 colores) los usuarios que conectan a la red en modo local obtienen un resultado con esa profunidad de color... Penoso! Estoy intentando crearlo con CreateCompatibleBitmap y despues copiando los pixels con BitBtl. No sé si es lo correcto. Sigo en ello. Gracias de nuevo!!. |
La franja horaria es GMT +2. Ahora son las 04:39:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi