Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри 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
30th
Июл
Прозрачность формы PNG, 2xTCV и др.
Posted by obzor under Delphi
Можно ли как нибудь сделать прозрачную форму по краям рисунка PNG и вообще как его поставить на форму?
с помощью pnglib в Bitmap грузил так:
type
AlphaRGB = packed record
B: Byte;
G: Byte;
R: Byte;
A: Byte;
end;
pARGB = ^TARGB;
TARGB = array [WORD] of AlphaRGB;
...
procedure LoadFromPNGFileForBG(FileName: String);
var
PNG:TPNGObject;
i,j:integer;
pA: pARGB;
pB: pByteArray;
begin
bmp.PixelFormat:=pf32bit;
PNG:=TPNGObject.Create;
PNG.LoadFromFile(FileName);
bmp.Width:=PNG.Width;
bmp.Height:=PNG.Height;
BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,PNG.Canvas.Handle,0,0,SRCCOPY);
for i := 0 to Height - 1 do
begin
pA := bmp.Scanline;
pB := PNG.AlphaScanline;
for j := 0 to Width - 1 do
begin
pA[j].A := pB[j];
pA[j].B := (pA[j].B * pB[j]) shr 8;
pA[j].G := (pA[j].G * pB[j]) shr 8;
pA[j].R := (pA[j].R * pB[j]) shr 8;
end;
end;
PNG.Free;
end;
применял так:
...
var
BF:TBlendFunction;
DC:HDC;
bs:TSize;
xySrc:TPoint;
begin
Result:=false;
with BF do
begin
BlendOp := AC_SRC_OVER;
BlendFlags := 0;
SourceConstantAlpha := 255;
AlphaFormat := AC_SRC_ALPHA;
end;
DC:=GetDC(0);
bs.cx:=bmp.Width;
bs.cy:=bmp.Height;
xySrc.X:=0;
xySrc.Y:=0;
Result:=UpdateLayeredWindow(Handle,DC,@xy,@bs,bmp.Canvas.Handle,
@xySrc,clNone,@BF,ULW_ALPHA);
ReleaseDC(0,DC);
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)