| Код | //Решение в лоб... var i,j: integer; Color: TColor; B: TBitmap; Mid: Byte; Res: integer; begin // Сначала перевод в градации серого как среднее арифметическое цветовых компонент for i := 0 to imgMain.Picture.Bitmap.Height-1 do for j := 0 to imgMain.Picture.Bitmap.Width-1 do begin Color := ColorToRGB(imgMain.Picture.Bitmap.Canvas.Pixels[j,i]); Mid := Round((GetRValue(Color)+GetGValue(Color)+GetBValue(Color))/3); imgMain.Picture.Bitmap.Canvas.Pixels[j,i] := RGB(Mid,Mid,Mid); end; // А потом из градаций серого в ч.б... for i := 0 to imgMain.Picture.Bitmap.Height-1 do for j := 0 to imgMain.Picture.Bitmap.Width-1 do begin Color := ColorToRGB(imgMain.Picture.Bitmap.Canvas.Pixels[j,i]); if GetRValue(Color)<128 then Mid := 0 else Mid := 255; imgMain.Picture.Bitmap.Canvas.Pixels[j,i] := RGB(Mid,Mid,Mid); end; end; | |