Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Pintar una imagen por canal con Scanline (https://www.clubdelphi.com/foros/showthread.php?t=53127)

sionks 11-02-2008 21:03:40

Pintar una imagen por canal con Scanline
 
Estoy realizando un proyecto el cual es sobre edicion de imagenes, y ahora se me ha presentado un problemita, el cual consiste en lo siguiente:

Estoy haciendo un recorrido de la imagen con scanline, y lo que deseo hacer es que cuando pulse un boton la imagen se ponga en tonalidades verdes, azules o rojas, es decir que solo pinte un canal por pixel.:confused:

seoane 11-02-2008 21:33:37

Pues muy sencillo, pon los valores de los otros dos canales a cero. Ten en cuenta que destruías la información de esos canales por lo que sera bueno que guardes una copia del original.

Aquí un par de ejemplos:
http://www.clubdelphi.com/foros/show...75&postcount=2

cHackAll 11-02-2008 21:57:03

Vaya amigo seoane veo que te has adelantado, sin embargo pongo una funcion mas rápida:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Count: Cardinal;
 Pixel: PCardinal;
begin
 Count := Image1.Picture.Width * Image1.Picture.Height;
 Image1.Picture.Bitmap.PixelFormat := pf32bit;
 with Image1.Picture.Bitmap do
  Pixel := ScanLine[Height - 1];
 while LongBool(Count) do
  begin
//   Pixel^ := Pixel^ and $FF0000; // Red
//   Pixel^ := Pixel^ and $00FF00; // Green
   Pixel^ := Pixel^ and $0000FF; // Blue
   Inc(Pixel);
   Dec(Count);
  end;
end;

Solo por que me daria pena desperdiciar el code. ;)

Saludos

seoane 11-02-2008 22:05:13

Cita:

Empezado por cHackAll (Mensaje 265038)
Vaya amigo seoane veo que te has adelantado, sin embargo pongo una funcion mas rápida

:D :D :D No me hagas sacar el cronometro que la ultima vez que me dijeron eso termine escribiendo la función en ensamblador :p

sionks 11-02-2008 22:13:15

Agradecimiento
 
Muchas Gracias, efectivamente los archivos qeu me has enviado me han sido de gran ayuda, nuevamente gracias:)

cHackAll 11-02-2008 22:33:20

Cita:

Empezado por seoane (Mensaje 265039)
:D :D :D No me hagas sacar el cronometro que la ultima vez que me dijeron eso termine escribiendo la función en ensamblador :p

Esto me suena a un desafío; realmente estas dispuesto a competir conmigo en assembler? :rolleyes::)

PD: te aconsejo que no saques el cronometro :D

Saludos


La franja horaria es GMT +2. Ahora son las 22:53:35.

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