如有知情并提供线索者,重奖.(100分)

  • 主题发起人 主题发起人 onedolph
  • 开始时间 开始时间
O

onedolph

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要一个能将两个图象合并成(覆盖)一个图象的算法或控件,恳请各位大虾帮忙.
 
AlphaBand?
很简单
1stClass中的算法原理:
1. 取得bmp2.transparentcolor;
2. 建立Alpha颜色表:
for i := -255 to 255 do Table := (Alpha * i) shr 8;
3. band bmp1&bmp2的每个点(不包括bmp2的透明部分):
if bmp2.pixel[x,y] <> transparentcolor then
begin
bmp1.pixel[x, y].blue := table[bmp2.pixel[x,y].blue - bmp1.pixel[x,y].blue] + bmp1.pixel[x,y].blue;
.......red := ......;
.......green := ......;
end;
 
第二种方法(我做半透明时用的):
1. 调整两幅bmp, 高度宽度相等
2. 设置两幅bmp.pixelformat := pf24bit;
3.
for i := 0 to bmp1.height do
for j := 0 to (bmp1.width-1) * 3 do
begin
PByteArray(bmp1.scanline)[j] :=
(PByteArray(Bmp1.scanline)[j] * a_percent +
PByteArray(Bmp2.scaline)[j] * (100 - a_percent)) div 100;
end;
 
谢谢Another_sYes,我自己也琢磨出来了.不过100分还是要给的.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部