![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как не зависеть от кол. цветов 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