Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как преобразовать Integer Delphi цвет в Hex для PhotoShop?


Kolan ©   (2007-12-04 10:10:00) 

Для Delphi 128 — это бордовый(Maroon). Как из этого числа получить теперь нех код 80 00 00, который обозначает то же цвет, но для PhotoShop'а?

Не программно, а так на калькуляторе — не врублюсь че на че делить…


Dib@zol   (2007-12-04 11:12:00) [1]

Ну как всегда. Опоздал)))

function GetHTMLColor(D:DWORD):PChar;
asm
 PUSH EBX;
 PUSH ECX;
 PUSH EDX;
 PUSH EDI;

 MOV EBX, EAX;
 PUSH 9;
 CALL GetMemory;
 POP EDX;
 XOR EDX, EDX;
 XCHG EAX, EBX;
 MOV EDI, 10h;

 DEC EBX;
 MOV BYTE PTR [EBX+9], 0;

 MOV ECX, 6;
 @loop:
   IDIV EDI;
   CMP DL, 0Ah;
   JL @less;
   ADD DL, 07h;
   @less:
   ADD DL, 30h;
   MOV BYTE PTR [EBX+ECX], DL;
   XOR DL, DL;
 LOOP @loop;

 MOV AX, WORD PTR [EBX+1];
 MOV CX, WORD PTR [EBX+3];
 MOV DX, WORD PTR [EBX+5];
 MOV WORD PTR [EBX+1], DX;
 MOV BYTE PTR [EBX+3], 20h;
 MOV WORD PTR [EBX+4], CX;
 MOV BYTE PTR [EBX+6], 20h;
 MOV WORD PTR [EBX+7], AX;

 MOV EAX, EBX;
 INC EAX;

 POP EDI;
 POP EDX;
 POP ECX;
 POP EBX;
end;


Kolan   (2007-12-04 11:00:00) [2]

> Может не надо пытаться работать как с Integer,

Все, благодарю. Написал маленькую программу, сделал то что надо.


Anatoly Podgoretsky   (2007-12-04 10:59:00) [3]

Может не надо пытаться работать как с Integer, а перейти на RGB - это уже массив из трех байт, где а[0] это R и т.д.


Kolan   (2007-12-04 10:52:00) [4]


> а тут уже строка… Ну да ладно.

Ну так как я не понял че на че делить я изменил строку.


> ] Игорь Шевченко ©   (04.12.07 10:41)

Благодарю.


Игорь Шевченко   (2007-12-04 10:41:00) [5]

uses
 GraphUtil

function ColorToWebColorStr(Color: TColor): string;

или

var
 RGB: Integer;
begin
 RGB := ColorToRGB(Color);
 Result := UpperCase(Format('#%.2x%.2x%.2x', [GetRValue(RGB),
   GetGValue(RGB), GetBValue(RGB)]));


homm   (2007-12-04 10:39:00) [6]

> [8] Kolan ©   (04.12.07 10:37)

Ну и бардак :)


> [0] Kolan ©   (04.12.07 10:10)
> Не программно, а так на калькуляторе — не врублюсь че на
> че делить…

а тут уже строка… Ну да ладно.


Kolan   (2007-12-04 10:37:00) [7]

> Какой еше строке?

Нех строке вестимо.

Короче сделал так и сё работает:
Result := Result[5]+Result[6]+Result[3]+Result[4]+Result[1]+Result[2];

Ответ найден, благодарю.


homm   (2007-12-04 10:27:00) [8]

Какой еше строке?


Kolan   (2007-12-04 10:26:00) [9]


> Переставить красный и синий каналы местами.

Як? Прам в строке?


homm   (2007-12-04 10:22:00) [10]

> [4] Kolan ©   (04.12.07 10:21)
> В вот в фотошопе это 80 00 00

Ну дак?
Переставить красный и синий каналы местами.
В чем проблема?


Kolan   (2007-12-04 10:21:00) [11]


> Нет, для дельфи 128 это $00000080.

Да

В вот в фотошопе это 80 00 00


Kolan   (2007-12-04 10:19:00) [12]

> ColorToRGB

Получилось наоборот, там же BGR
128
|
Result := IntToHex(ColorToRGB(TColor(Val)), 6);
|
000080 получилось


homm   (2007-12-04 10:14:00) [13]

> Как преобразовать Integer Delphi цвет в Hex для PhotoShop

Прожуй.


> Для Delphi 128 — это бордовый(Maroon).

Нет, для дельфи 128 это $00000080.


> Как из этого числа получить теперь нех код 80 00 00

Переставить красный и синий каналы местами?


Игорь Шевченко   (2007-12-04 10:11:00) [14]

ColorToRGB ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо