Ver Mensaje Individual
  #8  
Antiguo 28-12-2010
Avatar de Marck Silencer
Marck Silencer Marck Silencer is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 7
Reputación: 0
Marck Silencer Va por buen camino
Talking

Que tal ElKurgan, ya eh utilizado la funcion:
Código Delphi [-]
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
Aplicando esta función al programa hace que funcione por más tiempo eso si se notó a primera vista, pero de igual manera despues de un tiempo se va alentando (se nota al mover la ventana) y hasta que llega al limite mostrando el mismo error...x.X

Cita:
Empezado por coso Ver Mensaje
Hola,
el 123,123 que estas pasando a bitblt son la x e y iniciales de tu bitmap, que es de 1x1 y no llega a 123,123. Para coger el color de un unico pixel creo que no vale la pena usar un bitmap, sino accediendo directamente al monitor como ya haces, con el getdc(0). A ver si mas tarde puedo prepararte un ejemplo, aunque creo que hay alguno por aqui el club. Por otra banda, con el bitmap.free es suficiente para liberarlo (no es necesario el freeimage, etc), asi que al finalizar el ontimer queda libre, por lo que probablemente el error te venga de otro lado. saludos.

Código Delphi [-]

var
    c : TControlCanvas;
    color : TColor;
begin
    c := TcontrolCanvas.Create;

    try
           c.Handle := GetDC(0);
           color := c.Pixels[0,0];
           ...
    finally
           c.Free;
    end;
end;

quiza un poco mas sencillo...a ver si te sirve, saludos.
Hola!, gracias por tu respuesta!
Tienes razón en cuanto a lo del bitblt, ya probé el código que pusiste (está mejor así ) de igual manera despues de un tiempo (cabe mencionar que trabaja más tiempo que el código inicial que estaba usando) se detiene la ejecución pero ahora muestra el error de que el "Canvas no permite dibujar" algo así xD, no sé igual el problema está en estar creando y creando, y con la manipulación de los handles....

Será posible mandar llamar directamente librerias Dll de windows por ejemplo.... la "user32.dll" qeu es la qeu contiene la función GetDC y la "gdi32.dll" que contiene la función GetPixel, si la puedo mandar llamar directo me retornaría un numero entero del color, en vez de estar manejando handles, así solo sería cuestion de relizar la conversion de ese numero a el color..... Es una idea que tengo pero no se como mandar llamar funciones directamente de una DLL en Delphi. x.X

Saludos!!
Responder Con Cita