|
Платные хостинги
Раскрутка сайта
Книги по программированию
Grey Scale 256 в Delphi, Как сделать градации серого?
- Задача: сделать 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 dobegin image1.picture.Bitmap.Canvas.Pixels[400+x,125+y]:=x; image1.picture.Bitmap.Canvas.Pixels[400+x,100+y]:=255-x;end;end;
- Посмотри на фотощопных сайтах,там есть алгоритм перевода и ЦВ в ЧБ
- A kak hotelos' by podpravlennyj kod...
- это тебе хочется не совсем подправленный код, а готовую прогу...самое простое (правда, не совсем качественное, но это почти незаметно):Код Grayscale := (R + G + B) / 3;highlightSyntax('delphiZjhmZT','delphi');среднее арифметическое, то есть.
- Esli gotovaja programma principial'no otlichaetsja ot nabroska s palette, to da, hochu kusok koda.A zachem (R+G+B)/3 I hochu _sozdavat'_ risunki srazu v greyscale, a RGB->Grey i pri pomozhi IrfanView sdelat' bez problem.
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|