Последние записи
- Windows 10 сменить администратора
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
8th
Сен
Полу прозрачность — как?
Posted by maloy under Delphi, Архив
t3ns0r
Как реализовать полупрозрачность с BMP или PNG?
ВОВАН13
чтобы прозрачность работала нужно смешивать пиксель с фоновым пикселем вот однажды обнаружил такое
procedure BlendBitmap(Src, Dest: TBitmap; Amount: Byte; BackColor: TColor);
function CandC(C1, C2: TRGBTriple): Boolean;
begin {Сравнение двух цветов}
Result := (C1.rgbtBlue = C2.rgbtBlue) and
(C1.rgbtGreen = C2.rgbtGreen) and
(C1.rgbtRed = C2.rgbtRed);
end;
var x, y: Integer;
ps, pd: pRGBTriple;
rgb: TRGBTriple;
A1, A2: Double;
begin
if (Dest.Width > Src.Width) or (Dest.Height > Src.Height) then exit;
Src.PixelFormat := pf24Bit;
Dest.PixelFormat := pf24Bit;
A1 := Amount / 255;
A2 := 1 - A1;
rgb.rgbtRed := Lo(BackColor);
rgb.rgbtGreen := Lo(BackColor shr 8);
rgb.rgbtBlue := Lo((BackColor shr 8 ) shr 8);
for y := 0 to Src.Height-1 do
begin
ps := Src.ScanLine[y];
pd := Dest.ScanLine[y];
for x := 0 to Src.Width-1 do
begin
if not CandC(pd^, rgb) then
with pd^ do
begin
rgbtBlue := Round(A1 * ps^.rgbtBlue + A2 * rgbtBlue);
rgbtGreen := Round(A1 * ps^.rgbtGreen + A2 * rgbtGreen);
rgbtRed := Round(A1 * ps^.rgbtRed + A2 * rgbtRed);
end;
Inc(pd);
Inc(ps);
end;
end;
end;
тема на форуме от 2007 года
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)