![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Grayscale > X-Scale [D7, WinXP]
X-Disa © (2004-10-10 11:52:00)Всем привет! У меня есть grayscale изображение. И есть цвет (например clred). Задача такая: Из Grayscale сделать redscale и т.д. Чтоб черный цвет в данном случае заменился на красный, а остальные - на его оттенки. Белый так и должен остаться белым.
Fenik (2004-10-10 14:54:00) [1]> X-Disa (10.10.04 13:02) [2]
> Мне б найти сам алгоритм преобразования.
Ты думаешь, такой существует?
Mihey_temporary (2004-10-10 13:43:00) [2]http://delphibase.endimus.ru
X-Disa (2004-10-10 13:02:00) [3]Спасибо конечно, но эти алгоритмы я уже давно знаю... Мне б найти сам алгоритм преобразования. Я один наисал, но он не совсем так как надо работает.
Fenik (2004-10-10 12:05:00) [4]Дам тебе заготовку.
С алгоритмом самостоятельно разбирайся.
type
TRGB = record
B, G, R: Byte;
end;
pRGB = ^TRGB;
procedure Proc(Bitmap: TBitmap);
var Dest: pRGB;
X, Y: Word;
begin
Bitmap.PixelFormat := pf24Bit;
for Y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for X := 0 to Bitmap.Width - 1 do begin
with Dest^ do begin
B := // синий
G := // зеленый
R := // красный
end;
Inc(Dest);
end;
end;
end;
Например, инверсия:
procedure InvertBitmap(Bitmap: TBitmap);
var x, y: Integer;
Dest: pRGB;
begin
Bitmap.PixelFormat := pf24Bit;
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do begin
R := 255 - R;
G := 255 - G;
B := 255 - B;
end;
Inc(Dest);
end;
end;
end;