如何用程序现实水印效果???(200分)

  • 主题发起人 主题发起人 doll_paul
  • 开始时间 开始时间
D

doll_paul

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家发表意见,只要问题解决,分可再加成倍!!!!!!!!!!!!!!!!!!!!!!!!!

一定可可以解决问题才加哦~
 
天啊,是分少还是问题难???无高手吗??版主大哥快来啊!!!!!!(分可再加!!!!)
 
请参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=113835
 
没有其它人发言了吗???
 
你去Google上搜索一下“FADE”(淡化)效果的算法吧! 其实关键还是在这里。
淡化效果越好,最后的水印实现效果就越好!
 
楼上的老兄,我在找,可是找不到此算法,可以帮忙吗??分好说!!!!
 
天啊,不会吧,高手没了?[:(][:(][:(][:(]
 
自己好好研究一下源码吧!
http://homepages.borland.com/efg2lab/ImageProcessing/fade.htm
 
你指什么样的水印? 用来防伪的数字水印(嵌入图像数据,但未必直接显示在图像上),
还是仅仅指图像底纹?

 
简单说,是AB二图,A为背景图,B为前景图,B图要为半透明放在A图上,并且可以显示出A图。

有点像PhotoShop做出的效果!!!

 
利用 Fastgraph 控件可以很快做出你要的效果!
 
to 1978,老兄可以提供下载地址吗?或EM小弟,doll-paul@263.net
thx
 
Fastgraph 控件——http://www.fastgraph.com/demos.html
 
to YB_unique,小弟已经下载的此控件,但并不能达到小弟的要求,比如他好像是用DLL实现的!

不知各位能否提供程序解决问题?或VCL控件,谢谢~
 
真的没有高手再回答了吗????我要给分了!!!

快来人回答啊!!!!!!!!!!!!![:(][:(][:(]
 
用下面的方法你可以实现 将一幅位图(天鹅)显示在另一幅(水面)的奇妙效果!
Blend,Do you know?

var
i, j: Integer;
BackPoint, ForePoint: pByteArray;
begin
for i := 0 to FBackGround.Height - 1 do
begin
BackPoint := FBackGround.ScanLine;
ForePoint := FForeGround.ScanLine;
for j := 0 to (3 * FBackGround.Width) - 1 do
ForePoint[j] := ForePoint[j] + Transparency * (BackPoint[j] - ForePoint[j]) div 100;
end;
end;
 
{水印效果
参数:WaterMark 水印图片
Source 待加水印的图片
Left 水印位置
Top 水印位置
AlphaValue 透明度
TransColor 水印图片透明色
}
procedure BmpWaterMark(WaterMark,Source:TBitmap;Left,Top,AlphaValue:Integer;TransColor:TColor=0);
var
x,y:Integer;
R,Rs,Rw,G,Gs,Gw,B,Bs,Bw:Integer;
Wcl,Scl:TColor;
Begin
{水印}
For x:=0 to WaterMark.Width-1 do
Begin
For y:=0 to WaterMark.Height-1 do
Begin
Wcl:=WaterMark.Canvas.Pixels[x,y];
IF (TransColor<>0)and(Wcl=TransColor) then Continue;

Rw:=GetRValue(ColorToRGB(Wcl));
Gw:=GetGValue(ColorToRGB(Wcl));
Bw:=GetBValue(ColorToRGB(Wcl));

Scl:=Source.Canvas.Pixels[x+Left,y+Top];
Rs:=GetRValue(ColorToRGB(Scl));
Gs:=GetGValue(ColorToRGB(Scl));
Bs:=GetBValue(ColorToRGB(Scl));

R:=((AlphaValue*Rw)+((255-AlphaValue)*Rs))div 256;
G:=((AlphaValue*Gw)+((255-AlphaValue)*Gs))div 256;
B:=((AlphaValue*Bw)+((255-AlphaValue)*Bs))div 256;

Source.Canvas.Pixels[x+Left,y+Top]:=RGB(R,G,B);
End;
End;
End;
 
使用举例:

procedure TForm1.Button1Click(Sender: TObject);
begin
BmpWaterMark(Image2.picture.bitmap,image1.picture.bitmap,200,30,100);
end;
 
多人接受答案了。
 
后退
顶部