Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Инвертировать Bitmap

Delphi , Графика и Игры , Bitmap

Инвертировать Bitmap

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
Dieses ist eine ziemlich schnelle Methode, eine Farbumkehrung auf einem 
Bitmap anzuwenden. 
}


 { 
This is a very fast method to invert the colors of a bitmap. 
}


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

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

Переведенный текст:

Функция InvertBitmap в Delphi принимает объект TBitmap в качестве входного параметра, инвертирует его цвета и возвращает модифицированную картинку. Процесс инверсии涉гывает перебор каждого пикселя картинки, вычитание каждой компоненты цвета из 255 (максимальной значения) и хранение результата обратно в оригинальном пикселе.

Разбивка функции:

  1. MyBitmap.PixelFormat := pf24Bit; - эта строка устанавливает формат пикселей входной картинки в 24-бит, что означает, что каждый пиксель представлен тремя байтами (красный, зеленый и синий) без канала альфа.
  2. Внешний цикл (for y := 0 to MyBitmap.Height - 1 do) перебирает каждую строку (линию сканирования) картинки.
  3. Внутренний цикл (for x := 0 to MyBitmap.Width * 3 - 1 do) перебирает каждый пиксель в строке. Поскольку каждый пиксель представлен тремя байтами, мы должны умножить MyBitmap.Width на 3, чтобы получить общее количество пикселей (включая компоненты красного, зеленого и синего цветов).
  4. ByteArray[x] := 255 - ByteArray[x]; - эта строка вычитает каждую компоненту цвета из 255, эффективно инвертируя цвет пикселя.

Функция возвращает модифицированную картинку с помощью ключевого слова Result. Процедура Button1Click является обработчиком события, который вызывает InvertBitmap для картинки Image1.Picture.Bitmap, присваивает результат обратно изображению и обновляет контроль изображения.

Некоторые предложения по улучшению:

  • Вместо ручного установки формата пикселей можно использовать метод TBitmap.SetPixelFormat с более явным значением (например, pf24BitRGB).
  • Можно рассмотреть использование типа TColor или аналогичного для представления цветов вместо raw байтов.
  • Функция может выиграть от добавления проверки ошибок, таких как обработка случаев, когда входная картинка null или имеет не поддерживаемый формат пикселей.

В целом, это код обеспечивает простой и эффективный способ инвертирования цветов в Delphi-картинке.

Инвертировать Bitmap - это функция, которая быстро изменяет цвета bitmap, позволяя инвертировать их и создавать наоборотый эффект.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Bitmap ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 09:13:45/0.0035040378570557/0