![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ILA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.9.2002 Репутация: нет Всего: нет |
Задача: сделать BMP с 1 битом, а не 3 на пиксел, да и чтобы на принтер было легче. Градации серого в RGB ((256*(256+1)+1)*i), i=0..255, но это ж потом
20MB файл переводить в серый при помощи IrfanView или чего другого. А так, чтобы сразу рисовать? Одна из присланных мне версий приложена внизу, но RGB в результате меняются не до 255, а 255/3=85, так что все достаточно черно... Или есть другие радикальные идеи (этот код слишком медленен)? Заранее спасибо за помощь ! procedure TForm1.Button1Click(Sender: TObject); var pal: PLogPalette; hpal: HPALETTE; i: Integer; x,y:integer; begin //генерируем картинку BitBtn1.click; pal:= nil; //чтобы цвет задавался не RGB-значением, //а индексом из палитры: image1.picture.Bitmap.pixelFormat:=pf8bit; //начинаем генерировать серую палитру try // GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255); pal.palVersion := $300; pal.palNumEntries := 256; //заполняем палитру градациями серого for i := 0 to 255 do begin pal.palPalEntry[i].peRed := i; pal.palPalEntry[i].peGreen:=i; pal.palPalEntry[i].peBlue :=i; // pal.palPalEntry[i].peFlags:=255; end; //создаем палитру и получаем ее хэнлд (дескриптор) hpal := CreatePalette(pal^); //если все окэээээй, то //новую палитру if hpal <> 0 then image1.picture.Bitmap.Palette := hpal; finally FreeMem(pal); end; //рисуем тестовый серый прямоугольник с меняющейся яркостью: for y:=0 to 25 do for x:=0 to 255 do begin image1.picture.Bitmap.Canvas.Pixels[400+x,125+y]:=x; image1.picture.Bitmap.Canvas.Pixels[400+x,100+y]:=255-x; end; end; |
|||
|
||||
Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: 1 Всего: 4 |
Посмотри на фотощопных сайтах,
там есть алгоритм перевода и ЦВ в ЧБ -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
ILA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.9.2002 Репутация: нет Всего: нет |
A kak hotelos' by podpravlennyj kod...
|
|||
|
||||
MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
это тебе хочется не совсем подправленный код, а готовую прогу...
самое простое (правда, не совсем качественное, но это почти незаметно):
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
ILA |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.9.2002 Репутация: нет Всего: нет |
Esli gotovaja programma principial'no otlichaetsja ot nabroska s palette, to da, hochu kusok koda. A zachem (R+G+B)/3 ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |