Подписаться на RSS рассылку
Главная » Статьи по Delphi » Bitmap » Инвертировать цвета BitMap

Инвертировать цвета BitMap

Автор:

Tweet
function InvertBitmap(MyBitmap: TBitmap): TBitmap;
var
  i, j: Integer;
  ByteArray: PByteArray;
begin
  MyBitmap.PixelFormat := pf24Bit;
  for j := 0 to MyBitmap.Height - 1 do
  begin
    ByteArray := MyBitmap.ScanLine[j];
    for i := 0 to MyBitmap.Width * 3 - 1 do
    begin
      ByteArray[i] := 255 - ByteArray[i];
    end;
  end;
  Result := MyBitmap;
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.Bitmap := InvertBitmap(Image1.Picture.Bitmap);
end;

Просмотров: 6837

Обсудить на форуме

0   Спам
(31.10.2009)
3. DomiNick
Надо бы отметить, что оно не работает с прозрачностью...
И для оптимизации было бы неплохо вынести "MyBitmap.Height-1" и "MyBitmap.Width*3-1" в отдельные переменные (до циклов)...

0   Спам
(30.10.2009)
2. Unnamed user
ByteArray := MyBitmap.ScanLine[y];
Y нигде не объявлен, там должен быть индекс [i]?
Ответ: Там, вроде бы, должно быть j

0   Спам
(25.10.2008)
1. Марат
Подтверждаю лишнего кода нет smile


Имя *:
Email:


Код *:

Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.