就是在原图上在加一张小图,半透明
解决方案 »
- c++程序员转向delphi的困惑,请高手帮忙。
- 如何把设计好的报表格式保存在数据库中和从数据库中调出已设计好的报表格式,控件report build 开发工具delphi??
- Delphi没落了么???
- 错在哪里?急。。
- 求救:谁有控制扫描仪的源程序,要求能够设置灰度值,扫描区域,以及分辩率
- 这段时间正努力学DELPHI,正想问时才发现分快用光了,各位好心的大虾能帮帮我吗?
- Delphi构建进销存系统——POS系统开发实例的源码谁有?
- 郁闷啊,DEPHI
- 有今年参加高级程序员考试的吗?
- 老问题重提。。。
- 我想得到一个串值的最后一个值,该怎么做、
- 用DB2和Delphi或C++B做过开发的朋友请帮忙..关于过程调用?
http://web.tiscali.it/delphipage/imagingdemo.zip
crossbow(【带三尺剑立不世之功】) ( ) 信誉:93 2004-4-14 7:54:14 得分:50
我写的,你试试。Alpha是透明度,其它参数应该都看得懂吧?我就不多废话了。:)procedure BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha,
TransR, TransG, TransB: Integer);
var
X, Y: Integer;
PB, PF: PbyteArray;
R1, R2, G1, G2, B1, B2: Integer;
begin
BkGround.PixelFormat := pf24bit;
FrGround.PixelFormat := pf24bit;
for Y := Top to BkGround.Height - 1 do
begin
if Y - Top > FrGround.Height - 1 then
Break;
PB := BkGround.ScanLine[Y];
PF := FrGround.ScanLine[Y - Top];
for X := Left to BkGround.Width - 1 do
begin
if X - Left > FrGround.Width - 1 then
Continue;
B1 := PB[X * 3];
G1 := PB[X * 3 + 1];
R1 := PB[X * 3 + 2];
B2 := PF[(X - left) * 3];
G2 := PF[(X - left) * 3 + 1];
R2 := PF[(X - left) * 3 + 2];
if (B2 = TransB) and (G2 = TransG) and (R2 = TransR) then
Continue;
PB[X * 3] := (B2 * Alpha + B1 * (255 - Alpha)) div 255;
PB[X * 3 + 1] := (G2 * Alpha + G1 * (255 - Alpha)) div 255;
PB[X * 3 + 2] := (R2 * Alpha + R1 * (255 - Alpha)) div 255;
end;
end;
end;