![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод TColor в HEX [D6, WinXP]
Netcoder © (2002-12-13 08:12:00)Мастера, подскажите пожалуйста, как перевести Color в HEX. Короче, как в HTML редакторах.
Netcoder (2002-12-14 10:23:00) [1]Функция zavdima вроде сработала. Спасибо!
Гарик (2002-12-13 13:16:00) [2]Да, действительно, надо переворачивать "делфийский" цвет, чтобы получить такой же в Html. Т.е. в Delphi BGR.
из graphics.pas:
clRed = TColor($0000FF);
clBlue = TColor($FF0000);
zavdim (2002-12-13 12:48:00) [3]вот и я говорю. поэтому и разница с HTML.
Delphi и HTML по разному цвета нумеруют.
RGB - BGR.
Anatoly Podgoretsky (2002-12-13 12:34:00) [4]Превращение происходит в текстовую строку по правилам работы с числами, справа младшии разряды, никакой разницы по сравнению с десятичными, только что по модулю 16
zavdim (2002-12-13 12:15:00) [5]тоесть BGR.
zavdim (2002-12-13 12:12:00) [6]2 Гарик
я и говорю, что без IntToHex не убежишь. И я не пробовал, но в вашем случае точно RGB будет, а не BRG ? ....
Так - попробовал - не HTML формат, а как в Дельфи BRG.
2 Anatoly Podgoretsky ©
А можно предпоследнее повторить и чуть медленнее :-))
Anatoly Podgoretsky (2002-12-13 11:10:00) [7]У него там понапутано, и HEX и HTML, они ек пвыеф дпун другу
1. #BBGGRR
2. #RRGGBB
Гарик (2002-12-13 11:02:00) [8]2zavdim
> такую например строку мы не получим #ffA076.
почему
Form1.Color := $ffA076;
ShowMessage(IntToHex(ColorToRGB(Form1.Color),6))
получаем именно такую строку или речь не об этом?
zavdim (2002-12-13 10:21:00) [9]2 Гарик
function ColorToRGB(Color: TColor): Longint;
в HEX - это еще не перешло, и такую например строку мы не получим #ffA076.
Но и мне можно добавить следующее:
a := a and $1000000;
Netcoder (2002-12-13 09:48:00) [10]Спасибо
Гарик (2002-12-13 09:35:00) [11]ColorToRGB
получаешь цвет в HEX: RRGGBB
это имелось ввиду?
zavdim (2002-12-13 09:31:00) [12]function GetHexFrom(a : TColor) : string;
var r,g,b : integer;
begin
b := a div $10000;
g := (a mod $10000) div $100;
r := a mod $100;
Result := intToHex(r,2)+intToHex(g,2)+intToHex(b,2)
end;