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