B
Banknote
Unregistered / Unconfirmed
GUEST, unregistred user!
{水印效果
参数: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;
我按照例子,FORM上放了 2个图片,一个按钮,点击按钮后,2个图片都没有了。
参数: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;
我按照例子,FORM上放了 2个图片,一个按钮,点击按钮后,2个图片都没有了。