Hola! a todos los miembros de este genial foro!! Soy nuevo en el Foro espero también ayudar en lo que se pueda por aqui.
Mientras tanto tengo un problema que me ah traido de cabeza bastantes horas y aún no eh podido resolver. Ya eh buscado por todas partes e incluso Post de éste mismo foro me han servido para ir avanzando con mi programa pero aún estoy atorado
.
Una breve descripción de lo que busco con el programa...Requiero estar constantemente scaneando los pixeles una determinada área de la pantalla para obtener el color predominante en dicha área para despues seguir con más codigo utilizando ese color predominante. Hasta el momento eh conseguido el color de un solo pixel en la pantalla y de momento lo muestro cambiando el color de un panel... Tódo esto lo hago en un timer ajustado a 10 ms.....
Funciona correctamente va cambiando el color de panel según que color pase por ese pixel que estoy escaneando, el problema es que despues de un tiempo de estar escaneando y mostrandolo en la propiedad de color del panel, Se detiene la ejecución mostrandome un error "EoutOfResources" y realizando antes unas modicaciones al código me salía otro error acerca de que el Tcanvas no puede "dibujar".....
Creoo que mi error está en el modo de scanear oh en el modo de liberar la memoria o los handles que usal el TBitmap.....!! Ya eh intentando demaciadas cosas sin lograr que pueda escanear sin tiempo definido ese pixel..... Creo yo que debe de existir una forma en la cual se haga el escaneo -> Se liberen los recursos utilizados -> Volver a escanear con esos mismos recursos........así no pasaría esto!( segun entiendo claro) xD
Aqui pongo el código que estoy utilizando.
Código Delphi
[-]
implementation
var
myColor:TColor;
Pxl : TBitmap;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Pxl:=TBitmap.Create;
Pxl.Width:=1;
Pxl.Height:=1;
Pxl.Dormant;
Try
BitBlt(Pxl.Canvas.Handle,0,0,1,1,GetDC(0),123,123,SRCCOPY);
myColor:=Pxl.Canvas.Pixels[0,0];
panel1.Color:= myColor;
finally
Pxl.FreeImage;
Pxl.ReleaseHandle;
Pxl.ReleaseMaskHandle;
Pxl.Free;
end;
end;
end.
Espero alguien pueda hecharme la mano con este problemilla!
Saludos..
Marck