Как нарисовать полупрозрачный прямоугольник на канве?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как нарисовать полупрозрачный прямоугольник на канве?

Сообщение Aleandr » 10.07.2021 22:23:26

Есть канва (TBitmap 1280х720), в которой формируется некое изображение.
Требуется прямоугольную часть этого изображения "затемнить", т.е. нарисовать в определенном месте полупрозрачный прямоугольник.

Сейчас выкрутился так:

Код: Выделить всё
  for x := 0 to 300 do
  for y := 0 to 200 do
      begin
           col := buf.Canvas.Pixels[x,y];
           RedGreenBlue(col, R, G, B);
           col := rgbtocolor( R div 6, G div 6, B div 6);
           buf.Canvas.Pixels[x,y] := col;
      end;


Работает очень медленно. Может, существует готовое быстродействующее решение под Win & Lazarus?
Aleandr
незнакомец
 
Сообщения: 4
Зарегистрирован: 04.06.2021 16:24:09

Re: Как нарисовать полупрозрачный прямоугольник на канве?

Сообщение Снег Север » 11.07.2021 07:04:30

AlphaBlend
А готовое быстродействующее решение - Graphics32
https://github.com/graphics32/graphics32
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2995
Зарегистрирован: 27.11.2007 16:14:47

Re: Как нарисовать полупрозрачный прямоугольник на канве?

Сообщение Alex2013 » 11.07.2021 10:34:49

Alex2013
долгожитель
 
Сообщения: 2941
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 28

Рейтинг@Mail.ru