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

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

Как не зависеть от кол. цветов Descktop а ?


Ascan_ ©   (2002-09-18 14:30:00) 

Есть код:

bmp:= TBitmap.Create;
jpg := TJpegImage.Create;
jpg.LoadFromFile("file.jpg");
bmp.Assign(jpg);
jpg.free;

bmp.Canvas.Pixels[1,1]:= $707070;


Так вот: если у тебя выставлено Hicolor (16bit) на экране, то по адресу [1,1]будет лежать действительно $707070.
А если у тебя стоит 256 цветов, то и мечтать не стоит о том, что вычитаешь записаное. В данном случае вычитаешь $777777...
Что порекомендуете?


Ascan_   (2002-09-18 15:27:00) [1]

MBo,
Работает... Почему-то я не удевлен.
Но зато, если бы все читали литературу, не было этого Форума! :-)
Спасибо.


MBo   (2002-09-18 15:14:00) [2]

bitmap.pixelformat:=pf24bit;
после этого вставляй туда Jpeg

procedure TForm1.Button1Click(Sender: TObject);
var
j:tjpegimage;
b:tbitmap;
begin
j:=tjpegimage.create;
b:=tbitmap.create;
j.loadfromfile("e:\4.jpg");
b.assign(j);
b.pixelformat:=pf24bit;/// если это убрать, то
//в 256-цветном режиме в label1 будет 3, т.е. pf8bit -
image1.picture.assign(b);
label1.caption:=IntToStr(integer(b.pixelformat));
end;


Ascan_   (2002-09-18 14:55:00) [3]

MBo,
А как сделать так, чтобы работать с палитрой, записанной в файле "file.jpg"? Дело в том, что я хочу рабоать с оригинальными цветами картинки.
А то получается, что картинка 16мил. цв., а загружаю ее, а она уже с палитрой в 256 цветов.


MBo   (2002-09-18 14:43:00) [4]

создать в bitmap свою 256-цветную палитру, например, с помощью SetDIBColorTable


Наверх

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