PDA

Ver la Versión Completa : Obtener RGB a partir de HTML


Niko
04-01-2009, 00:23:59
Hola de nuevo a todos.

Sigo con mi programa, y ahora se me plantea otra duda, he logrado convertir un valor RGB a un valor HTML con esta expresion:


function ColorToHtml(DelphiColor:TColor):string;
var
tmpRGB : TColorRef;
begin
tmpRGB := ColorToRGB(DelphiColor);
Result:=Format( '#%.2x%.2x%.2x',
[GetRValue(tmpRGB),
GetGValue(tmpRGB),
GetBValue(tmpRGB)]);
end;
begin
Edit4.Caption:=ColorToHtml(Panel1.Color);
end;


Ahora, lo que quiero hacer es poder hacerlo a la inversa, ese valor que tengo en HTML, convertirlo en RGB y mostrarlo en label1, label2 y label3.

A ver si alguien me puede hechar una manilla. Muchas gracias de antemano.

xEsk
04-01-2009, 03:21:58
Hola.

function HtmlToColor(Color: string): TColor;
begin
Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

Saludos.

Niko
04-01-2009, 12:53:12
Hola xEsk:

Esto que me dices, al ponerlo en el OnClick del Button me da error en el siguiente Procedure. De todos modos no me he enterado muy bien, a lo mejor soy yo el que lo he puesto mal.

Mira:
procedure TForm1.SpeedButton9Click(Sender: TObject);
function HtmlToColor(Color: string): TColor;
begin
Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

procedure TForm1.TrackBar1Change(Sender: TObject); // AQUI ME DA EL ERROR
function ColorToHtml(DelphiColor:TColor):string;
var
tmpRGB : TColorRef;
begin
tmpRGB := ColorToRGB(DelphiColor);
Result:=Format( '#%.2x%.2x%.2x',
[GetRValue(tmpRGB),
GetGValue(tmpRGB),
GetBValue(tmpRGB)]);
end;
begin
Panel2.Color:= RGB(TrackBar1.Position,
0,
0);
Panel1.Color:= RGB(TrackBar1.Position,
TrackBar2.Position,
TrackBar3.Position);
Edit1.Text:= IntToStr(TrackBar1.Position);
Edit4.Text:=ColorToHtml(Panel1.Color);
Edit5.Text:= '('+Edit1.Text+','+Edit2.Text+','+Edit3.Text+')';
end;

De todos modos ya te digo que no se por donde me ando, yo tengo el valor HTML en el EDIT4 y quiero pasarlo a RGB y mostrarlo en label1, label2 y label3.

Me puedes explicar un poquito?, muchas gracias.

xEsk
04-01-2009, 22:20:27
Hola, el código que has puesto aquí esta hecho un "churro" (y lo digo con todo el cariño xD).

Tienes procedures dentro de procedures, y por esto te da errores.

Te pongo un ejemplo de como podrias estructurarlo:

function HtmlToColor(Color: string): TColor;
begin
Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

function ColorToHtml(DelphiColor:TColor):string;
var
tmpRGB : TColorRef;
begin
tmpRGB := ColorToRGB(DelphiColor);
Result:=Format( '#%.2x%.2x%.2x',
[GetRValue(tmpRGB),
GetGValue(tmpRGB),
GetBValue(tmpRGB)]);
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
// tu codigo del "SpeedButton OnClick"
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
// tu codigo del "TrackBar OnChange"
end;


Saludos.

Niko
05-01-2009, 14:17:58
Hola xEsk:

Muchas gracias por tu ayuda (y por la crítica), la verdad es que llevaba casi 3 años sin coger el Delphi y se me han olvidado las cosas, de todos modos yo lo veia un poco raro también, asi que en cuanto me lo has dicho he caido. Ya me ha salido, y todo correcto, solo me queda solventar un par de errores y listo.

Muchas gracias de verdad.
Un saludo.