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

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

Как сделать монохромный растр? [D7, XP]


Страницы:   1 2 3

Б ©   (2009-01-17 21:33:00) 

Не в градациях серого, а монохромный, т.е. состоящий из 2 цветов - черного и белого.


antonn   (2009-01-18 02:07:00) [41]

Не надо лукавить, чтобы не понять, что автору нужно монохромную картинку из "обычной" надо либо быть тупым, либо слишком двоичным и с могучим самомнением.
Кто не видел монохромных - откройте mspaint и посмотрите.


Германн   (2009-01-18 01:54:00) [42]

Ещё один пример наличия вопросапри отсутствии задачи!
А без объяснения задачи, невозможно понять что нужно автору.

> antonn ©   (18.01.09 00:57) [12]
> если грубо

А вот грубить не надо!
:)


antonn   (2009-01-18 00:57:00) [43]

если грубо:
procedure PrepareBitmapLevel(_B_out:Tbitmap; Lr,Lg,Lb:byte; _b:boolean);
const Pixels = MaxInt div SizeOf(TRGBTriple);
type PRGBArray = ^TRGBArray;
    TRGBArray = array[0..Pixels-1] of TRGBTriple;
var x, y: Integer; RowOut: PRGBArray;
begin
 _B_out.PixelFormat:=pf24bit;
 for y:=0 to _B_out.Height-1 do begin
    RowOut:= _B_out.ScanLine[y];
   for x:=0 to _B_out.Width-1 do begin
      if (RowOut[x].rgbtRed>Lr)and(RowOut[x].rgbtGreen>Lg)and(RowOut[x].rgbtBlue>Lb)and(_ b) then begin
         RowOut[x].rgbtRed:=255;
         RowOut[x].rgbtGreen:=255;
         RowOut[x].rgbtBlue:=255;
      end else
        if (RowOut[x].rgbtRed<Lr)and(RowOut[x].rgbtGreen<Lg)and(RowOut[x].rgbtBlue<Lb)and not(_b) then begin
         RowOut[x].rgbtRed:=255;
         RowOut[x].rgbtGreen:=255;
         RowOut[x].rgbtBlue:=255;
      end;
   end;
 end
end;

для каждого канала задается уровень.


{RASkov}   (2009-01-18 00:14:00) [44]

> [4] Б   (17.01.09 21:45)

TBitmap.Monochrome = True ?


palva   (2009-01-18 00:01:00) [45]


> Как её определить, эту самую шкалу серого?

Сам же написал выше - от 0 до 255, т. е.:
type TMonoColor = (0..255);
Ну а растр будет массивом:
type TRastr = array [1..600] of array [1..800] of TMonoColor;


Б   (2009-01-17 23:41:00) [46]

> Монохромный не обязательно должен состоять из двух цветов.

Лично я знаю только две его вариации:
1) В градациях серого (от 0 до 255).
2) Чисто чёрный и белые цвета.

> Я бы делал через шкалу серого

Как её определить, эту самую шкалу серого?


palva   (2009-01-17 23:31:00) [47]


> а монохромный, т.е. состоящий из 2 цветов - черного и белого.

Монохромный не обязательно должен состоять из двух цветов.


Anatoly Podgoretsky   (2009-01-17 23:23:00) [48]

Я бы делал через шкалу серого, а потом через порог, например 128, который легко организовать путем маскирования по этому модулю.


KilkennyCat   (2009-01-17 21:54:00) [49]


> Б   (17.01.09 21:45) [4]

Ну тогда отвечу просто и универсально: нужно использовать clBlack и clWhite. Соответственно первый это 000000, второй - ffffff. исходя из этого можно творить любые эффекты.


Игорь Шевченко   (2009-01-17 21:48:00) [50]

Учитесь правильно задавать вопросы, например, читая:
http://ln.com.ua/~openxs/articles/smart-questions-ru.htmlдо полного и окончательного просветления.

В противном случае ваши темы будут закрываться без предупреждения.


Б   (2009-01-17 21:45:00) [51]

Обычный TBitmap в формате 24 бит. Чего же тут не понятного?


KilkennyCat   (2009-01-17 21:44:00) [52]

все равно пока непонятно.


Б   (2009-01-17 21:41:00) [53]

> В смысле, как сделать растр? Из цветного?

В смысле наложить эффект на цветной растр.


KilkennyCat   (2009-01-17 21:38:00) [54]

В смысле, как сделать растр? Из цветного?


Страницы:   1 2 3

Наверх

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