Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi hex-codes in RGB werte und umgekehrt?? (https://www.delphipraxis.net/96965-hex-codes-rgb-werte-und-umgekehrt.html)

bitsetter 4. Aug 2007 12:52

Re: hex-codes in RGB werte und umgekehrt??
 
Zitat:

Zitat von maxmax
Jetzt funzt alles perfekt, ausser das:
Delphi-Quellcode:
procedure TForm1.Umwandeln2Click(Sender: TObject);
begin
try
R := ran.Text;
G := gan.Text;
B := ban.Text;
Hexcolor2.Caption := Format('#%.2x%.2x%.2x', [R,G,B]);
Panel2.Color := RGB(StrToInt(R), StrToInt(G), StrToInt(B));
except
ShowMessage('Ungülte Farbenwerte! Bitte überprüfen!');
end;
end;
er meldet das #%.2x% ein ungültiges Format ist!
was muss ich ändern?

Ich nehme mal an, dass die Variablen R, G und B Strings sind, also musst du diese erst in Bytes umwandeln.
Delphi-Quellcode:
begin
R := ran.Text;
G := gan.Text;
B := ban.Text;
Hexcolor2.Caption := Format('#%.2x%.2x%.2x', [StrToInt(R),StrToInt(G),StrToInt(B)]);
Auch da musst du wieder darauf achten, dass gültige Zahlen in den Feldern sind und dass der Bereich der Zahlen zwischen 0..255 liegt.

Zitat:

Zitat von maxmax
sry mein 2 post aber:
ich hab noch ein problem!

wenn ich 95CAFF für Hex1 nehme: kommt als RGB 255 202 149 // es muss 149 202 255 lauten!! Und das Pnael ziegt orange an, obwohl es hellblau ist! (siehe bug1.bmp)
[/b]

Du gibst die Werte andersrum ein:
Delphi-Quellcode:
StringToColor('$0000FF');//= ROT;
StringToColor('$00FF00');//= Grün
StringToColor('$FF0000');//= Blau
Wenn du es trotzdem so rum möchtest, dann gibt es hier im Thread schon einiges an Code dafür.

Svenkan 4. Aug 2007 13:22

Re: hex-codes in RGB werte und umgekehrt??
 
Ähm, was ist mit den Funktionen, die ich dir gepostet hab?!

maxmax 4. Aug 2007 13:44

Re: hex-codes in RGB werte und umgekehrt??
 
danke bitsetter so funzt es perfekt:
Delphi-Quellcode:
procedure TForm1.Umwandeln2Click(Sender: TObject);
begin
try
R := ran.Text;
G := gan.Text;
B := ban.Text;
Hexcolor2.Caption := Format('#%.2x%.2x%.2x', [StrToInt(R),StrToInt(G),StrToInt(B)]);
Panel2.Color := RGB(StrToInt(R), StrToInt(G), StrToInt(B));
except
ShowMessage('Ungülte Farbenwerte! Bitte überprüfen!');
end;
end;
@bitsetter:
aber: ich versteh irgendwie deine antwort zu dem nicht, bitsetter! was muss ich da jetzt machen?? :
Delphi-Quellcode:
procedure TForm1.Umwandeln1Click(Sender: TObject);
begin
try
Hex1 := '$'+Hexcolor.Text;
Col := StringToColor(Hex1);
RGBan.Caption := Format('%d %d %d',[GetRValue(Col), GetGValue(Col),GetBValue(Col)]);
Panel1.Color:= Col;
except
ShowMessage ('Ungültige Farbenwerte! Bitte überprüfen!')
end;
end;
Was bewirken eigentlich diese zeichen: %d %d %d

Zitat:

Zitat von bitsetter
Auch da musst du wieder darauf achten, dass gültige Zahlen in den Feldern sind und dass der Bereich der Zahlen zwischen 0..255 liegt.

1. Ich hab sie ja richtig eingegeben...

Zitat:

Zitat von bitsetter
Zitat:

Zitat von maxmax
sry mein 2 post aber:
ich hab noch ein problem!

wenn ich 95CAFF für Hex1 nehme: kommt als RGB 255 202 149 // es muss 149 202 255 lauten!! Und das Pnael ziegt orange an, obwohl es hellblau ist! (siehe bug1.bmp)
[/b]

Du gibst die Werte andersrum ein:
Delphi-Quellcode:
StringToColor('$0000FF');//= ROT;
StringToColor('$00FF00');//= Grün
StringToColor('$FF0000');//= Blau
Wenn du es trotzdem so rum möchtest, dann gibt es hier im Thread schon einiges an Code dafür.

Ich geb die werte aber per Edit - feld ein und ich will sie ganz normal eingeben... Aber warum funzt es nicht?????


@svenkan: ich komm irgendwie nicht mit deiner funktion zurecht...
außerdem hab ich ja selber auch schon angefangen, aber halt mit fehlern...

bitsetter 4. Aug 2007 14:08

Re: hex-codes in RGB werte und umgekehrt??
 
Zitat:

Zitat von maxmax
Was bewirken eigentlich diese zeichen: %d %d %d

Das sind Delphi-Referenz durchsuchenFormatbezeichner Zitat:",D Integer Dezimal. Zeigt Integer als Dezimalzahlen an. Gilt auch für Integer-Werte in Datenstrukturen."

Noch eine Variante
Delphi-Quellcode:
var
  Col: TColor;
begin
 Col:= StringToColor('$0000FF');//jetzt Blau
 Col:= ColorToRGB(Col);
 Panel1.Color:= RGB(GetBValue(Col), GetGValue(Col), GetRValue(Col));

maxmax 4. Aug 2007 15:28

Re: hex-codes in RGB werte und umgekehrt??
 
danke für die antwort... das ist ja viel einfacher...
Könntet ihr mir noch folgenden Kommentar beantworten?
Delphi-Quellcode:
procedure TForm1.Umwandeln1Click(Sender: TObject);
begin
try
Hex1 := '$'+Hexcolor.Text;
Col:= StringToColor(Hex1);
Col:= ColorToRGB(Col);
RGBan.Caption := Col; //Wie Col zu String umwandeln??
Panel1.Color:= RGB(GetBValue(Col), GetGValue(Col), GetRValue(Col));
except
ShowMessage ('Ungültige Farbenwerte! Bitte überprüfen!')
end;
end;

scrat1979 4. Aug 2007 15:39

Re: hex-codes in RGB werte und umgekehrt??
 
Zitat:

Zitat von maxmax
danke für die antwort... das ist ja viel einfacher...
Könntet ihr mir noch folgenden Kommentar beantworten?
Delphi-Quellcode:
procedure TForm1.Umwandeln1Click(Sender: TObject);
begin
try
Hex1 := '$'+Hexcolor.Text;
Col:= StringToColor(Hex1);
Col:= ColorToRGB(Col);
RGBan.Caption := Col; //Wie Col zu String umwandeln??
Panel1.Color:= RGB(GetBValue(Col), GetGValue(Col), GetRValue(Col));
except
ShowMessage ('Ungültige Farbenwerte! Bitte überprüfen!')
end;
end;

Hallo!!

Col(or) müsste ein Integer-Wert sein. Daher müsste Dir auch hier die Funktion IntToStr(Col) weiterhelfen können. Die Hex/Integer/String - Umwandlungen kannst Du ja aus den obigen Posts entnehmen - falls nötig. Hoffe es funktioniert so!

SCRaT

marabu 4. Aug 2007 17:20

Re: hex-codes in RGB werte und umgekehrt??
 
Hallo,

die Farbzerlegung muss nicht zeitraubend über Funktionen erfolgen, Windows kennt einen speziellen Datentyp dafür:

Delphi-Quellcode:
var
  clr: TColor;
  pe: TPaletteEntry absolute clr; // Redefinition
begin
  clr := clRed; // interner Farbname
  clr := StringToColor('clRed'); // externer Farbname
  clr := StringToColor('$0000FF'); // alternativer Code für clRed
  with pe do
  begin
    peRed := 255; // volle Intensität bei Rot
    peGreen := StrToInt('$80'); // halbe Intensität bei Grün
  end;
  pe.peBlue := $40; // geringe Intensität bei Blau

  clr := ColorToRGB(clr); // Paletten-Flag entfernen
  ShowMessage('$' + IntToHex(clr, 6)); // Ausgabe $BBGGRR

  with TPaletteEntry(clr) do // type cast
    ShowMessage(Format('$%.2x%.2x%.2x', [peBlue, peGreen, peRed]));
end;
Freundliche Grüße

maxmax 5. Aug 2007 08:33

Re: hex-codes in RGB werte und umgekehrt??
 
danke marabu, aber ich hab es jetzt auch mit meiner version geschafft...
danke nochmal


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz