Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2005
maravert maravert is offline
Miembro
 
Registrado: jul 2004
Ubicación: Xalapa, México
Posts: 158
Poder: 20
maravert Va por buen camino
Cambiar colores a la imagen

Hola, a todos, antes de continuar ofresco una disculpa por no aplicar correctamente la guia de estilo, no la encontre en el sitio, espero alguien me diga donde se encuentra para no cometer este error nuevamente.

Tengo un programa que esta abajo en el cual existe un Timage con un bmp el cual tiene una imagen en color negro el cual quiero que el usuario cambie el color de la imagen de acuerdo al color que elija con el ColorDialog,

La primera vez si hace el cambio de negro a cualquier color, despues de esto ya no me cambia a otro color aunque guardo la referencia del color anterior.

Podria alguien decirme que estoy haciendo mal.

Gracias a todos de antemano por su colaboracion


Atenamente

Alejandro Maravert



unit color;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
ColorDialog1: TColorDialog;
Panel1: TPanel;
Label1: TLabel;

procedure Button1Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Guia : Integer;

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
antesColor, actualColor : Tcolor;
i,j : Integer;

begin

if Guia = 0 then begin
guia := 1;
actualColor := Panel1.Color;
antesColor := 0;
end
else
begin
antesColor := actualColor;
actualColor := Panel1.Color;
end;

for i := 0 to (Image1.Height - 1) do begin
for j := 0 to (Image1.Width - 1) do
begin
// es del color que quiero cambiar?
if (Image1.Canvas.Pixels[i,j] = antesColor) then
begin
Image1.Canvas.Pixels [i,j] := actualColor;
end;
end;
end;


end;


procedure TForm1.Panel1Click(Sender: TObject);
var
a: Tcolor;
begin
ColorDialog1.color := panel1.color;
if Colordialog1.Execute then
begin
panel1.Color:= ColorDialog1.Color;
// label1.caption := inttostr (panel1.Color);
end;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
Guia := 0;
end;


end.
Responder Con Cita
  #2  
Antiguo 27-02-2005
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 20
<Sergio> Va por buen camino
1.- usa un Tbitmap + Tpaintbox
2.- usa TBitmap.scanline

Es el lio de formato de pixel, supongo que quieres trabajar sobre 24bits, asi que mejor si tu Tbitmap.handeltype:=bmDIB , para que sea independiente de la resolución actual de la pantalla.
Responder Con Cita
  #3  
Antiguo 28-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por maravert
Hola, a todos, antes de continuar ofresco una disculpa por no aplicar correctamente la guia de estilo, no la encontre en el sitio, espero alguien me diga donde se encuentra para no cometer este error nuevamente.
En la página del Club Delphi en la parte superior derecha (a la derecha del LOGO) tienes varios enlaces, entre ellos el de la Guía de estilo. En el pie de mi mensaje, en la firma, tienes también el acceso a la "Guía de estilo" y a la página que explica la utilización de TAG's en los mensajes (con éstos te hubieras evitado dar formato "a mano" al código delphi).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 07-03-2005
S.M.S. S.M.S. is offline
Miembro
 
Registrado: jun 2003
Ubicación: España
Posts: 56
Poder: 21
S.M.S. Va por buen camino
maravert, creo que tu código no funciona porque la variable actualcolor la declaras dentro del evento onclick del botón, de tal forma que, com se inicia cada vez que lo pulsas, no conservará los datos que le pasastes en el anterior clic de panel1.color. Declárala en la parte private de la form.


Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:52:06.


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
Copyright 1996-2007 Club Delphi