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

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

Код цвета [D7, WinXP]


nordic3 ©   (2006-09-01 21:03:00) 

Как при нажатии кнопки в Edit записать код пиксела Image?
Собственно проблема: преобразовать TColor в string.
И причем не должно быть всяких clBlue или clRed. Только код типа $00FF00FF.


vrem   (2006-09-03 20:55:00) [1]

function divdw(col:longword; he:byte):byte; //col = цвет, he: 0=pal,  1=B, 2=G, 3=R, result - выбранный байт из 4-х
asm
      mov     ecx,eax
      cmp     dl,0
      je      @@1
      shl     ecx,8
      cmp     dl,1
      je      @@1
      shl     ecx,8
      cmp     dl,2
      je      @@1
      shl     ecx,8
@@1:   shld    eax,ecx,8
end;


Gydvin   (2006-09-03 20:20:00) [2]

а чем функции colortostring, stringtocolor не устраивают?


PSPF2003   (2006-09-03 18:05:00) [3]

Col := Image1.Canvas.Pixels[125, 125];
Edit1.Text := '$' + IntToHex(Col, 2);


nordic3   (2006-09-03 17:59:00) [4]

Вот более точный вопрос:
нажимаешь на кнопку, в Edit пишется код (типа $00FF00FF) цвета [5,5]пиксела из Image!
Пожалуйста, можно подробный пример!


Vovan#1   (2006-09-02 18:48:00) [5]

Начиная с какой-то версии (с 6-ой?) Delphi есть в стандартной поставке модуль GraphUtil:

uses GraphUtil;

{ Converts a TColor to a Web color constant like #FFFFFF }
function ColorToWebColorStr(Color: TColor): string;

Её код:

function ColorToWebColorStr(Color: TColor): string;
var
 RGB: Integer;
begin
 RGB := ColorToRGB(Color);
 Result := UpperCase(Format('#%.2x%.2x%.2x', [GetRValue(RGB),
   GetGValue(RGB), GetBValue(RGB)]));  { do not localize }
end;


Германн   (2006-09-02 01:31:00) [6]


> Anatoly Podgoretsky ©   (02.09.06 00:09) [4]
>
> nordic3   (01.09.06 21:08) [2]
> TColor это не RGB, поэтому его надо преобразовывать.

Так в сабже никто и не просил преобразовывать в RGB. Так что действительно  достаточно IntToHex(PixelColor,8);

Но вот только неясна суть замысла. Зачем его записывать в Edit?


Anatoly Podgoretsky   (2006-09-02 00:09:00) [7]

nordic3   (01.09.06 21:08) [2]
TColor это не RGB, поэтому его надо преобразовывать.
Если надо именно так $00FF00FF, то достаточно IntToHex, но это опять же не RGB, а Integer в hex нотации. RGB будет если перевернуть. А так это Palette, B, G, R


Loginov Dmitry   (2006-09-01 22:24:00) [8]

IntToHex()


nordic3   (2006-09-01 21:08:00) [9]

А можно по-подробнее?


Anatoly Podgoretsky   (2006-09-01 21:07:00) [10]

Придется переводить TColor в RGB, ну а дальше побайтно в hex


Наверх

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