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

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

Вот такой вот интересный вопрос...


cypher ©   (2002-06-20 00:20:00) 

... как преобразовать цвет из TrueColor в 256 цветов? Тоесть, имеем RGB = {255,255,255), нада получить RGB(8,8,8). Очень нужно!


MBo   (2002-06-21 06:36:00) [1]

>Мне нужно не меняя палитры найти наиболее подходящий цвет в 256 цветах...
Изучи функции работы с палитрами. 8-бит палитра состоит из 256 элементов TRGBQuad, т.е. каждому НОМЕРУ цвета соответствует некое соотношение R,G и B. Получи палитру, сравни составляющие своего цвета со всеми элементами палитры, по некому критерию макс. правдоподобия найди номер ближайшего цвета.

Вот пример для обратной задачи- задание серой палитры.
Функций для работы с палитрами много (WinSDK Help)

procedure TForm1.Button1Click(Sender: TObject);
var a:array[0..255,0..255] of byte;
ct:array[0..255] of TRGBQuad;
b:tbitmap;
i,j:integer;
begin
b:=tbitmap.create;
b.pixelformat:=pf8bit;
b.Width := 256;
b.Height := 256;
for i:=0 to 255 do begin
ct[i].rgbRed:=i;
ct[i].rgbBlue:=i;
ct[i].rgbGreen:=i;
ct[i].rgbReserved:=0;
end;
for i:=0 to 255 do for j:=0 to 255 do a[i,j]:=trunc(sqrt(i*j));
SetDIBColorTable(b.canvas.Handle,0,$100,ct);
SetBitmapBits(b.Handle, sizeof(a),@a);
Image1.picture.assign(b);
b.free;
end;


AK-74   (2002-06-21 00:09:00) [2]

Я же говорю: надо делить (а не с поллитрами работать :)

function RGB_To_256(r,g,b: Integer): Integer;
begin
result := r div 32 * 32 + g div 32 * 4 + b div 64
end;


MBo   (2002-06-20 20:18:00) [3]

256 цветов могут быть разными


cypher   (2002-06-20 19:36:00) [4]

Неее... обьясню задачу..
У меня есть цвет RGB - три числа Red, Green и Blue...
Мне нужно не меняя палитры найти наиболее подходящий цвет в 256 цветах...
Ну как в Paint"e открыть какой-нить 24битный bmp-файл и сохранить его в 256-цветном варианте, только мне не картинку нада преобразовать, а всего ОДИН цвет. Помогите плиз, очень нужно победить эту задачу.


MBo   (2002-06-20 07:41:00) [5]

BTW, битмап проще всего перевести в 256 так

ABitmap.PixelFormat:=pf8bit;


MBo   (2002-06-20 06:51:00) [6]

В 256-режиме нужно создавать палитру


AK-74   (2002-06-20 03:21:00) [7]

А просто разделить на 32 нельзя?


Наверх

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