Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cambiar paleta de colores de un TImage (https://www.clubdelphi.com/foros/showthread.php?t=29650)

Drake 27-01-2006 17:19:19

Cambiar paleta de colores de un TImage
 
Buenas estoy haciendo una pequeña aplicación basada en el retoque fotografico es una aplicacion muy simple con lo que no llevara filtros ni nada eso, lo que quiero saber es como hago para, al utilizar 3 TTrackBar cambiar el color o la paleta de colores de un TImage o mejor dicho cambiar la paleta de colores de la imagen (picture) del TImage.
En otras palabras como lo que se hace en el photoshop unos 3 Tracbar para el RGB de la imagen. Bueno espero que me puedan ayudar.

MaxiDucoli 24-11-2011 00:43:53

Hola!
Quizás esto te ayude:

Yo hago lo siguiente:

Aca te lo copio y lo pego de mi codigo directamente. Esta en el evento de un TShape.
Vos podes copiar desde el VAR hasta el ultimo END; y pegarlo donde lo necesites o hacer alguna funcion o procedimiento para que te sea mas facil de aplicar a muchos lados:

procedure TFrmColorEditor.ShpVerdeMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
VAR
PNG : TPngImage; // Greamos un Tiamge de PNG - Agrega TPngImage al uses (delphi 2009 en adelante)
i,j : INTEGER;
RutaTemp : String; // Ruta de la imagen a utilizar (podes quitarlo si queres)
col : TColor; // Color que vamos a aplicar
begin
RutaTemp := ExtractFilePath(ParamSTr(0)) + 'Temp\' + Form1.LblNAme.Caption;
PNG := TPngImage.create; // Creamos el PNG
TRY
PNG.LoadFromFile(RutaTemp); Cargamos el PNG

if Sender Is TShape then Col := TShape(Sender).Brush.Color; // Si lo esta enviando un objeto TSHAPE (podes utilizar lo que quieras) entonces la variable COLOR, se transforma en ese color.

FOR j := 0 TO PNG.Height-1 DO //recorremos el alto de la imagen
BEGIN
FOR i := 0 TO PNG.Width-1 DO // recorremos el largo de la imagen
BEGIN
IF PNG.Canvas.Pixels[i,j] <> THEN PNG.Canvas.Pixels[i,j] := Col; Si el color no es negro puro (Yo lo necesitaba asi por motivos de transparencias) entonces pinta el pixel con el color de la variable COL
END
END;
Image1.Picture.Graphic := PNG; // Cargamos la imagen en un TImage
Image1.Picture.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Temp\' + Form1.LblNAme.caption); Salvamos
FINALLY
PNG.Free // Liberamos PNGImage
END;
end;


Este es mi código, ahora lo que te sugiero es que hagas dentro de un Scroll o Slider y la variable TColor (COL) la uses asi:

3 Sliders SliderRojo, SliderVerde, SliderAzul

Setea los Slider MIN = 0 MAX = 255

En el evento Change de cada Slider pongas

Col := RGB(SliderRojo.value,SliderVerde.value,SliderAzul.value);

Y listo!
Se entendio algo?? :p


La franja horaria es GMT +2. Ahora son las 13:14:38.

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