Ver Mensaje Individual
  #2  
Antiguo 24-11-2011
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Reputación: 19
MaxiDucoli Va por buen camino
Wink

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??
Responder Con Cita