Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Averiguar los colores de un gráfico. (https://www.clubdelphi.com/foros/showthread.php?t=27973)

adebonis 06-12-2005 05:21:58

Averiguar los colores de un gráfico.
 
Hola.

Tengo la necesidad de averiguar el color de los puntos de un gráfico (.bmp ó .jpg) para poder utilizarlo en la propiedad Color de un componente.

¿Alguien sabe cómo se obtienen a partir del gráfico?.

Gracias y Saludos.
Adolfo Bonis Mora
Barcelona

dec 06-12-2005 05:34:41

Hola,

No sé si te refieres a algo así:

Código Delphi [-]
var
  color: TColor;
begin
  color := Image1.Picture.Bitmap.Canvas.Pixels[1, 1];
  {...}
end;

Caro 06-12-2005 19:13:17

Hola amigo DEC hice la prueba del codigo que pusiste asignandole el color a un panel en el evento onMouseDown de mi imagen. Al hacer click me desaparece la imagen y me asigna el color negro a mi panel, me podrias explicar porque ocurre eso porfa.

Código Delphi [-]
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  color: TColor;
begin
  color := Image1.Picture.Bitmap.Canvas.Pixels[X, Y];
  panel1.Color:=color;
end;

gracias por adelantado

dec 07-12-2005 02:13:42

Hola,

Por el momento no puedo decirte sino que utilizando el código que has propuesto este me funciona tal como se espera... ¿No te aparece algún error? Yo lo probé con una imagen en formato "BMP",... ¿tal vez lo probaste con algún otro formato de imagen y entonces "la cosa" se comporta de distinto modo? Ya digo que, por el momento, no se me ocurre otra cosa que decirte...

Caro 07-12-2005 21:39:10

Hola DEC gracias por reponder, el formato que utilice para mi imagen es jpg y no me da ningun error, en este momento hice la prueba con bmp y funciona todo bien, pero por que sera que con jpg no funciona.

Athanatos 12-12-2005 16:21:02

Cita:

Empezado por Caro
Hola DEC gracias por reponder, el formato que utilice para mi imagen es jpg y no me da ningun error, en este momento hice la prueba con bmp y funciona todo bien, pero por que sera que con jpg no funciona.

En realidad si quieres trabajar con una imagen la forma adecuada es primero leer el jpg, pasarlo a un bmp con assign y recien leer o escribir los pixeles. Asi tienes en memoria una zona para trabajar tu grafico. Mejor si el bmp es del tipo dib (bitmap independiente del dispositivo, es decir de la resolucion actual en color de la pantalla que puede ser 8,16,24 o generalmente 32 bits.)

Para guardar el bmp lo pasas de nuevo a un objeto Tjpegimage.

No puedes trabajar directamente con el jpeg por que, por lo menos en la version que tengo, no tiene un bitmap propio, por lo menos no un bitmap editable y supongo que esto es para ahorrar memoria a costa de velocidad. Asi que cada vez que se repinta tiene que decodificar nuevamente el jpeg para mostrar la parte que falta en pantalla.

jachguate 12-12-2005 19:24:15

Cita:

Empezado por Athanatos
Para guardar el bmp lo pasas de nuevo a un objeto Tjpegimage.

Solamente recordar que cada vez que se aplica el algoritmo jpeg a una imagen, se pierde detalle, por lo que si esta operación se realiza muchas veces, terminarás teniendo una imagen "deteriorada" digitalmente.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:14:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi